какой самый быстрый способ написать XML - PullRequest
8 голосов
/ 18 апреля 2011

Мне нужно часто создавать XML-файлы, и я выбираю XmlWrite для этой работы, я обнаружил, что он потратил много времени на такие вещи, как WriteAttributeString (мне нужно написать много атрибутов в некоторых случаях), мой вопрос: есть ли какой-нибудь лучший способ создания XML-файлы? Заранее спасибо.

Ответы [ 6 ]

6 голосов
/ 18 апреля 2011

Самый быстрый способ, который я знаю, это два написать структуру документа в виде простой строки и проанализировать ее в объект 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>
3 голосов
/ 18 апреля 2011

XmlSerializer

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

3 голосов
/ 18 апреля 2011

Запишите его непосредственно в файл, например, через FileStream (через созданный вручную код).Это может быть сделано очень быстро , но также довольно сложно поддерживать.Как всегда, оптимизация идет с призовым тегом.

Кроме того, не забывайте, что " преждевременная оптимизация - корень всех зол ".

0 голосов
/ 18 апреля 2011

Мне лично нравится использовать тип XmlDocument.Это все еще немного тяжело при написании узлов, но атрибуты являются однострочными, и все намного проще, чем при использовании Xmlwrite.

0 голосов
/ 18 апреля 2011

Сколько времени занимает ... это 10 мс, 10 секунд или 10 минут ... и сколько это занимает весь процесс, который пишет Xml?

Не говоря, что вы не должныОптимизация, но, я думаю, это вопрос того, сколько времени вы хотите потратить на оптимизацию этого небольшого кусочка процесса.В конце концов, чем быстрее вы захотите идти, тем сложнее будет поддерживать себя в этом случае (личное мнение).

0 голосов
/ 18 апреля 2011

Использование анонимных типов и сериализация в XML - интересный подход, так как упоминается здесь

...