2010-05-26 59 views
3

我非常喜歡n00b,但最近我一直在解析一些XML數據。我實際上在這個網站上發現了一個很好的功能,我可以通過執行以下操作來訪問具有特定屬性的特定節點:docFoo.SelectSingleNode(「foo/bar/baz [@ name ='qux']);但是,數據看起來像這樣的:從SelectSingleNode獲取具有屬性的節點

<saving-throws> 
    <saving-throw> 
     <name>Fortitude</name> 
     <abbr>Fort</abbr> 
     <ability>Con</ability> 
     <modifiers> 
      <modifier name="base" value="2"/> 
      <modifier name="ability" value="5"/> 
      <modifier name="magic" value="0"/> 
      <modifier name="feat" value="0"/> 
      <modifier name="race" value="0"/> 
      <modifier name="familar" value="0"/> 
      <modifier name="feature" value="0"/> 
      <modifier name="user" value="0"/> 
      <modifier name="misc" value="0"/> 
     </modifiers> 
    </saving-throw> 
    <saving-throw> 
     <name>Reflex</name> 
     <abbr>Ref</abbr> 
     <ability>Dex</ability> 
     <modifiers> 
      <modifier name="base" value="6"/> 
      <modifier name="ability" value="1"/> 
      <modifier name="magic" value="0"/> 
      <modifier name="feat" value="0"/> 
      <modifier name="race" value="0"/> 
      <modifier name="familar" value="0"/> 
      <modifier name="feature" value="0"/> 
      <modifier name="user" value="0"/> 
      <modifier name="misc" value="0"/> 
     </modifiers> 
    </saving-throw> 

而且我希望能夠獲得該節點與名稱=基礎,但每個省擲節點,在childnode「簡稱」 = XX我可以以某種方式做,在一個單一的SelectSingleNode還是我。將不得不停止在豁免並通過樹的其餘部分走?

+0

升級和你不需要擔心那些老豁免檢定值。 ;)儘管如此,原始XML文檔在哪裏?它看起來像你想在「本網站」鏈接它,但我沒有看到鏈接。 – 2010-05-26 22:06:16

+0

Nah我搞砸了wiki格式,現在應該在那裏。我對4E沒有興趣(DM有一些舊的3.5 E東西)。 :) – bdefreese 2010-05-26 22:08:08

回答

2

試試這個,這會給你的修改標籤誰的節省擲祖先的孩子簡稱標籤是「堡壘」

//saving-throw/modifiers/modifier[@name='base' and ../../abbr = "Fort"] 
+0

甜蜜和光的作品,感謝mjmarsh! – bdefreese 2010-05-26 22:21:07

6

這應該給你你想要什麼:從3.5到4E

SelectSingleNode("/saving-throws/saving-throw[abbr = 'Fort']/modifiers/modifier[@name='base']");