Какой способ чтения XML из C# кода является оптимальным?
Как читать XML в C#
Новые ответы
Склад для хранения вещей москва вао www.skladovka.ru. Склад для хранения вещей москва вао www.skladovka.ru.Если нужно прочитать xml файл большого размера, и не хочется загружать весь этот файл в память, то нужно использовать XmlReader
. Этот класс позволяет читать XML в манере близкой к SAX. Итератор пробегает по всем элементам дерева, а пользователю нужно определить как обрабатывать каждый из таких элементов. Пример:
XmlTextReader textReader = new XmlTextReader("file.xml");
while (textReader.Read())
{
XmlNodeType nType = textReader.NodeType;
if (nType == XmlNodeType.XmlDeclaration)
{
// ...
}
if (nType == XmlNodeType.Comment)
{
// ...
}
if (nType == XmlNodeType.Attribute)
{
// ...
}
if (nType == XmlNodeType.Element)
{
// ...
}
if (nType == XmlNodeType.Entity)
{
// ...
}
if (nType == XmlNodeType.Entity)
{
// ...
}
if (nType == XmlNodeType.DocumentType)
{
// ...
}
if (nType == XmlNodeType.Whitespace)
{
// ...
}
}
Есть интересный способ работы с XML. Нужно создать XSD схему для документа, затем с помощью xsd.exe сгенерировать классы, соответствующие xml-структуре. После этого можно использовать стандартный XmlSerializer для загрузки/сохранения объектов.
Классический способ — использовать XmlDocument
Открываем файл:
XmlDocument doc = new XmlDocument();
doc.Load("test.xml");
Выбираем узлы или атрибуты, используя запросы XPath:
// Выбираем единичный узел.
XmlNode node = doc.DocumentElement.SelectSingleNode("/foo/bar");
// Выбираем все узлы по запросу.
XmlNode[] nodes = doc.DocumentElement.SelectNodes("/foo/bar");
Или обращаемся напрямую к классам XmlDocument
, XmlNode
и тп