Выбор узлов из XMLDocument с использованием asp.net - PullRequest
0 голосов
/ 31 января 2012

У меня следующий 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 до 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

но это не работает ...

Пожалуйста, предложите.

Спасибо

1 Ответ

0 голосов
/ 31 января 2012

[Это слишком долго для комментария, поэтому ...]

Переформатирование начала 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?


Ответ : XPath благодаря этому ответу :

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

, который использует пустой набор узлов, являющийся ложным: узлы до id="25" будут иметь пустой набор preceding-sibling::..., аналогично для узлов после id="75".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...