Как анализировать XML-файлы? [закрыто]

Существует ли простой метод анализа файлов XML в C #? Если так, то что?

492
задан 21.06.2015, 17:22

7 ответов

Я использовал бы LINQ для XML, если Вы находитесь в.NET 3.5 или выше.

238
ответ дан 17.09.2019, 09:33
  • 1
    Спасибо за справку и вдохновение. Я просто понял что это doesn' t обрабатывают списки объектов, таким образом, I' ve обновил мою версию для тестирования на проход . Не уверенный, если that' s хорошая идея все же. – Shabbyrobe 24.06.2009, 08:19

Это очень просто. Я знаю, что это стандартные методы, но можно создать собственную библиотеку для контакта с этим намного лучше.

Вот некоторые примеры:

XmlDocument xmlDoc= new XmlDocument(); // Create an XML document object
xmlDoc.Load("yourXMLFile.xml"); // Load the XML document from the specified file

// Get elements
XmlNodeList girlAddress = xmlDoc.GetElementsByTagName("gAddress");
XmlNodeList girlAge = xmlDoc.GetElementsByTagName("gAge"); 
XmlNodeList girlCellPhoneNumber = xmlDoc.GetElementsByTagName("gPhone");

// Display the results
Console.WriteLine("Address: " + girlAddress[0].InnerText);
Console.WriteLine("Age: " + girlAge[0].InnerText);
Console.WriteLine("Phone Number: " + girlCellPhoneNumber[0].InnerText);

кроме того, существуют [приблизительно 111] другие методы для работы с. Например, здесь . И я думаю, что нет никакого лучшего метода, чтобы сделать это; всегда необходимо ли выбирать его собой, что наиболее подходит для Вас.

301
ответ дан 17.09.2019, 09:33
  • 1
    похож на него, станет более хитрым, потому что то, что происходит для объекта, который обеспечивает проход для итерации атрибута списка, который Вы уже вставили dict, может быть общим решением, не возможно. – Anurag Uniyal 24.06.2009, 08:53
  • 2
    +1 для упоминания XmlDocument, который намного более удобен, чем интерфейсы сериализации в некоторых случаях. Если Вы после одного определенного элемента можно получить доступ к дочерним элементам с индексатором: xmlDoc [" Root"], и они могут быть объединены в цепочку: xmlDoc [" Root"] [" Folder"] [" Item"] для копания иерархии (хотя it' s разумный для проверки этого эти элементы на самом деле существуют), – Jason Williams 21.03.2010, 02:02

Используйте пользу Схема XSD, чтобы создать ряд классов с xsd.exe и использовать XmlSerializer для создания дерева объектов из XML и наоборот. Если у Вас есть немного ограничений на Вашу модель, Вы могли бы даже попытаться создать прямое отображение между Вами образцовые классы и XML с Xml*Attribute.

существует вводная статья о Сериализации XML на MSDN.

подсказка по Производительности: Построение XmlSerializer является дорогим. Сохраните ссылку на Ваш XmlSerializer экземпляр, если Вы намереваетесь анализировать/писать несколько XML-файлов.

47
ответ дан 17.09.2019, 09:33

При обработке большого объема данных (много мегабайтов) тогда, Вы хотите использовать XmlReader для потоковой передачи, анализируют XML.

Что-либо еще (XPathNavigator, XElement, XmlDocument и даже XmlSerializer, если Вы сохраняете полный сгенерированный граф объектов) приведет к использование верхней памяти и также очень медленное время загрузки.

, Конечно, при необходимости во всех данных в памяти так или иначе, тогда у Вас не может быть большого выбора.

24
ответ дан 17.09.2019, 09:33
  • 1
    Обратите внимание, что на ВСТАВКЕ, ОБНОВЛЕННЫЙ () функция возвращается 1 для ВСЕХ столбцов. Конечно. – ErikE 01.10.2019, 17:50

При использовании.NET 2.0 попробуйте XmlReader и ее подклассы XmlTextReader, и XmlValidatingReader. Они обеспечивают быстрое, легкое (использование памяти, и т.д.), передают только способ проанализировать XML-файл.

, Если Вам нужно XPath возможности, попробуйте XPathNavigator. Если Вам нужен весь документ в попытке памяти XmlDocument.

7
ответ дан 17.09.2019, 09:33

Используйте XmlTextReader , XmlReader , XmlNodeReader и System.Xml.XPath пространство имен. И ( XPathNavigator , XPathDocument , XPathExpression , XPathnodeIterator ).

Обычно XPath делает чтение XML легче, который является тем, что Вы могли бы искать.

17
ответ дан 17.09.2019, 09:33

Я не уверен, существует ли "лучшая практика для парсинга XML". Существуют многочисленные технологии, которым удовлетворяют для различных ситуаций. Какой способ использовать зависит от конкретного сценария.

можно пойти с LINQ  to  XML, XmlReader , XPathNavigator или даже регулярные выражения. Если Вы разрабатываете свои потребности, я могу попытаться дать некоторые предложения.

5
ответ дан 17.09.2019, 09:33
  • 1
    уверенный - Вы используете, если оператор со вставленными и удаленными таблицами для сравнения исходных и новых значений - если поле изменилось, сделайте вещь - в противном случае don' t – Ray 01.10.2019, 17:52

Теги

Похожие вопросы