Я использую XMLReader
в C# .net 4.0 для поиска небольшого фрагмента XML. Я хочу найти определенные элементы в XML, и я использую метод XMLReader.ReadToFollowing("name")
для поиска элементов. Я не знаю порядка в XML-документе, который содержит эти элементы; они находятся в последовательности различий или вообще отсутствуют. Приказ не имеет значения для меня, но я выброшу исключение, если элемент отсутствует.C# XML Parsing - Поиск определенных элементов
XMLReader только вперед, поэтому, если первый элемент, который я ищу, является последним значением в документе XML, дополнительные чтения не будут выполнены.
Я думал о создании нового XMLReader для каждого поиска. У меня есть только небольшой набор элементов для поиска, и XML не огромен, поэтому я не думаю, что будет много накладных расходов, но я могу ошибаться.
Есть ли лучшая библиотека для поиска XML, когда вы не знаете порядок элементов? Или это отсутствие порядка в XML - нарушение спецификации XML?
В частности, допустим, у меня есть простой XML. Голова и 10 детей.
<sometag>
<element1>data</element1>
<element2>data</element2>
.
.
.
<element10>data</element10>
</sometag>
Было бы неэффективно открывать 5 XMLReaders, чтобы найти эти элементы? Я мог бы также использовать одного читателя и проходить через каждый элемент, но тогда мне нужно будет отслеживать, какие элементы я нашел.
Если у вас есть образец XML, есть несколько способов сделать это. Я уверен, что многие люди будут рады опубликовать некоторые конкретные примеры - я знаю, что буду! Другие способы, которыми вы могли бы подходить к этому, - использовать синтаксический анализ на основе DOM через XmlDocument и XPath - http://msdn.microsoft.com/en-us/library/system.xml.xmldocument или более современный класс XDocument - http: // msdn .microsoft.com/en-us/library/system.xml.linq.xdocument.aspx – dash