【问题标题】:Getting a node with attributes from SelectSingleNode从 SelectSingleNode 获取具有属性的节点
【发布时间】:2017-01-18 04:41:00
【问题描述】:

我很n00b,但最近我一直在玩解析一些XML 数据。实际上,我在此站点上发现了一个不错的功能,可以通过执行以下操作到达具有特定属性的特定节点: docFoo.SelectSingleNode("foo/bar/baz[@name='qux']); 但是,数据看起来像这个:

<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>

并且我希望能够获取 name=base 的节点,但对于子节点“abbr”=xx 的每个保存抛出节点。我可以在单个 SelectSingleNode 中以某种方式做到这一点,还是我将不得不停止保存并遍历树的其余部分?

【问题讨论】:

  • 从 3.5 升级到 4E,您无需担心那些旧的豁免值。 ;) 说真的,原始 XML 文档在哪里?您似乎打算在“此站点”中链接它,但我没有看到链接。
  • 不,我搞砸了 wiki 格式,现在应该在那里。我对 4E 不感兴趣(DM 有很多旧的 3.5 E 东西)。 :)

标签: c# xml


【解决方案1】:

这应该给你你想要的:

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

【讨论】:

    【解决方案2】:

    试试这个,这将为您提供 modifier 标签,该标签的 saving-throw 祖先的子 abbr 标签是“堡垒”

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      相关资源
      最近更新 更多