XmlDocment - как получить узлы путем фильтрации с использованием XPath - PullRequest
0 голосов
/ 23 мая 2011

Если у вас есть XML-документ, и вам нужно найти определенные узлы на основе определенных значений атрибута (число 4), какой из них будет правильным подходом (с точки зрения производительности): -

a) Отфильтруйте документ XML (с помощью XPath), чтобы получить список узлов, которые соответствуют любому из значений атрибутов, а затем просмотрите фильтрованный список узлов, чтобы получить узлы, имеющие определенное значение атрибута, с помощью If-else.

b) Фильтровать XML-документ (с XPath) для каждого значения атрибута отдельно.

<Nodes>
  <a class="myclass" type="type1">some text</a>
  <a class="myclass" type="type2">some text</a>
  <img src = "myGraphic.jpg?id={Guid}"/>
</Nodes>

Я использую приведенный ниже XPath (который может быть неправильным: -))

"//A[@class] | //a[@class] | //IMG[@src] | //img[@src]"

Цель состоит в том, чтобы получить отдельный список всех имеющих type = "type1" отдельный список type = "type2" и отдельный список идентификаторов в теге img.

1 Ответ

1 голос
/ 23 мая 2011

Мой приблизительный ответ: производительность не будет иметь большого значения, если у вас нет очень большого документа или набора документов.

В этом случае вам, вероятно, захочется использовать SAX, и в любом случае вы захотите пройти по документу (документам) только один раз и не хранить все это в памяти. Таким образом, вы будете просматривать документы, останавливаясь на каждом элементе a и добавляя его в список list1 или list2 в зависимости от его типа.

...