#c# #.net #xml
#c# #.net #xml
Вопрос:
У меня есть xml-шаблон, в котором есть заголовок и раздел сведений внутри него. Я должен заполнить данные в XML-шаблон во время выполнения из коллекции объектов. подробная часть будет повторяться, поэтому я буду добавлять подробную часть в XML-документ в цикле foreach. в настоящее время я использую xmldocument, но я читал, что xmldocument занимает больше памяти и замедляет процесс при увеличении размера XML-файла. Пожалуйста, подскажите мне, каков наилучший подход.
пример tempalte
<Document>
<Header>
<OrgName></OrgName>
<OrgAddress></OrgAddress>
</Header>
<Detail>
<EmpId> </EmpId>
<EmpName></EmpName>
<Address>
<Stree1></Stree1>
<Stree2></Stree2>
<Pin></Pin>
<City></City>
</Address>
<Detail>
</Document>
Ожидаемый результат
<Document>
<Header>
<OrgName>abc</OrgName>
<OrgAddress>asd dfs 999 dfsd</OrgAddress>
</Header>
<Detail>
<EmpId>100 </EmpId>
<EmpName>Sham</EmpName>
<Address>
<Stree1>church street</Stree1>
<Stree2>fgdf</Stree2>
<Pin>5472</Pin>
<City>Huston</City>
</Address>
<Detail>
<Detail>
<EmpId>112 </EmpId>
<EmpName>Tomi</EmpName>
<Address>
<Stree1>fsdf</Stree1>
<Stree2>fgdf</Stree2>
<Pin>3455</Pin>
<City>Huston</City>
</Address>
<Detail>
<Detail>
<EmpId>120 </EmpId>
<EmpName>GhanSham</EmpName>
<Address>
<Stree1>sfssdf</Stree1>
<Stree2>fgdf</Stree2>
<Pin>6574</Pin>
<City>Huston</City>
</Address>
<Detail>
</Document>
Ответ №1:
Если вам нужен наиболее эффективный способ записи Xml с использованием памяти, вам следует использовать класс XmlWriter .
http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspx
Вот пример, использующий некоторые из ваших Xml:
using(XmlWriter writer = XmlWriter.Create("output.xml"))
{
writer.WriteStartElement("Document");
writer.WriteStartElement("Header");
writer.WriteStartElement("OrgName");
writer.WriteString("abc");
writer.WriteEndElement();
writer.WriteStartElement("OrgAddress");
writer.WriteString("asd dfs 999 dfsd");
writer.WriteEndElement();
// End Header
writer.WriteEndElement();
writer.WriteStartElement("Detail");
writer.WriteStartElement("EmpId");
writer.WriteString("100");
writer.WriteEndElement();
// End Detail
writer.WriteEndElement();
// End Document
writer.WriteEndElement();
}
Комментарии:
1. Я согласен с тобой, Майк, у меня есть одна проблема: здесь жестко запрограммирована структура xml, я хочу, чтобы она была настроена так, чтобы позже я хотел изменить позиции узла или пометить некоторые узлы необязательными, тогда я смогу это настроить. используя шаблон, я могу редактировать шаблон в любое время и изменять расположение узлов.
2. Майк для решения проблемы, о которой я упоминал в комментарии выше, я использовал xslt. Спасибо