我有以下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
但它不起作用......
请建议。
由于
答案 0 :(得分:0)
[这对评论来说太长了,所以......]
重新格式化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
元素或所有兄弟XML DOM节点(包括元素和文本)在两个标识的Node
元素之间,或仅仅Node
个元素?< / p>
回答 :XPath感谢this answer:
/TextWithNodes/node()[preceding-sibling::Node[@id=25] and following-sibling::Node[@id=75]]
使用空节点集为false:id="25"
之前的节点将有一个空的preceding-sibling::...
节点集,类似于id="75"
之后的节点。