【问题标题】:Selecting nodes from XMLDocument using asp.net使用 asp.net 从 XMLDocument 中选择节点
【发布时间】:2012-01-31 16:20:04
【问题描述】:

我有以下 xml:

<TextWithNodes><Node id="0" />astralis<Node id="8" /> <Node id="9" />ltd<Node id="12" />
<Node id="14" />{<Node id="15" />DOCUMENT<Node id="23" />}<Node id="24" /> <Node id="25" />{<Node id="26" />TYPE<Node id="30" />}<Node id="31" />EX-<Node id="34" />10<Node id="36" />.<Node id="37" />12<Node id="39" /> <Node id="40" />{<Node id="41" />SEQUENCE<Node id="49" />}<Node id="50" />3<Node id="51" /> <Node id="52" />{<Node id="53" />FILENAME<Node id="61" />}<Node id="62" />e<Node id="63" />300201<Node id="69" />_<Node id="70" />ex<Node id="72" />10<Node id="74" />-<Node id="75" />12<Node id="77" />.<Node id="78" />txt<Node id="81" /> </TextWithNodes>

我需要从 ID 25 到 ID 75 中选择节点。它是 XML 的一部分。原始 XML 很长。没有 XPath 怎么办?

Dim nodeList As XmlNodeList = xmlDoc.SelectNodes("//Node[@id >" & 25 & " and @id <" & 75 & "]")

Dim sb As StringBuilder = New StringBuilder

For Each childNode As XmlNode In nodeList
    sb.Append(childNode.InnerText)
Next

但它不工作......

请提出建议。

谢谢

【问题讨论】:

  • XML 是 .NET,而不仅仅是 ASP.NET,因此需要重新标记。

标签: .net xml vb.net xpath


【解决方案1】:

[评论太长了,所以...]

重新格式化 XML 的开头:

<TextWithNodes>
  <Node id="0" />
  astralis<Node id="8" />
  <Node id="9" />
  ltd
  <Node id="12" />
  < Node id="14" />
  {
  <Node id="15" />
  DOCUMENT
  <Node id="23" />
  }
  <Node id="24" />
  <Node id="25" />
  {
  <Node id="26" />
  TYPE
  <Node id="30" />

表示Node元素的节点没有内容;而是内容在元素之间。所以当你说:

从 ID 25 到 ID 75 挑选节点

您是只需要Node 元素,还是两个已识别的Node 元素之间的所有同级XML DOM 节点(元素和文本),还是只需要Node 元素?


回答:XPath 感谢this answer

/TextWithNodes/node()[preceding-sibling::Node[@id=25] and following-sibling::Node[@id=75]]

利用空节点集为假:id="25" 之前的节点将有一个空的preceding-sibling::... 节点集,id="75" 之后的节点类似。

【讨论】:

  • 只是这些 ID 之间的节点元素
  • 我需要这些 Node 元素之间的文本,例如 Itd { TYPE
  • @DotnetSparrow:这两个 cmets 是矛盾的。请准确。
  • 我需要 Id > 25 且小于 75 的 Node 元素之间的文本
  • @DotnetSparrow:好的,有答案了。
猜你喜欢
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
相关资源
最近更新 更多