Мне нужно часто создавать XML-файлы, и я выбираю XmlWrite для выполнения этой работы, я обнаружил, что он потратил много времени на такие вещи, как WriteAttributeString (в некоторых случаях мне нужно написать много атрибутов), мой вопрос: есть ли лучший способ создать файлы xml? Заранее спасибо.
какой самый быстрый способ написать XML
Ответы (6)
Самый быстрый из известных мне способов — написать структуру документа в виде простой строки и разобрать ее в объект XDocument:
string str =
@"<?xml version=""1.0""?>
<!-- comment at the root level -->
<Root>
<Child>Content</Child>
</Root>";
XDocument doc = XDocument.Parse(str);
Console.WriteLine(doc);
Теперь у вас будет структурированный и готовый к использованию объект XDocument, который вы можете заполнить своими данными. Кроме того, вы даже можете проанализировать полностью структурированный и заполненный XML как строку и начать оттуда. Также вы всегда можете использовать структурированные XElements следующим образом:
XElement doc =
new XElement("Inventory",
new XElement("Car", new XAttribute("ID", "1000"),
new XElement("PetName", "Jimbo"),
new XElement("Color", "Red"),
new XElement("Make", "Ford")
)
);
doc.Save("InventoryWithLINQ.xml");
Что будет генерировать:
<Inventory>
<Car ID="1000">
<PetName>Jimbo</PetName>
<Color>Red</Color>
<Make>Ford</Make>
</Car>
</Inventory>
Вам нужно только определить иерархию классов, которые вы хотите сериализовать, вот и все. Кроме того, вы можете управлять схемой с помощью некоторых атрибутов, применяемых к вашим свойствам.
Запишите его непосредственно в файл, например, через FileStream
(через созданный вручную код). Это можно сделать очень быстро, но довольно сложно поддерживать. Как всегда, оптимизация идет с призовым тегом.
Также не забывайте, что «преждевременная оптимизация — корень всех зол».
Сколько времени... это 10 мс, 10 секунд или 10 минут... и сколько времени составляет весь процесс, который записывает Xml?
Не говорю, что вы не должны оптимизировать, но imo это вопрос того, сколько времени вы хотите потратить на оптимизацию этого небольшого процесса. В конце концов, чем быстрее вы хотите ехать, тем сложнее будет его поддерживать в этом случае (личное мнение).
Лично мне нравится использовать тип XmlDocument
. При написании узлов все еще немного тяжело, но атрибуты являются однострочными и в целом проще, чем использование Xmlwrite.