Hilario Simoes Ответов: 1

Как включить записи в XML элемент C#


Привет...я хотел бы порадовать вас, ребята, чтобы помочь мне создать этот xml-файл...Я пробовал с этим кодом выше, но у меня есть некоторые ошибки...даже когда я объявляю docRecords вне цикла For, это дает мне ошибку:
An unhandled exception of type 'System.NullReferenceException' occurred in XMLGenUsingLINQ.exe
Дополнительная информация: ссылка на объект не определена как экземпляр объекта...что-то в этом роде...Я перевел с моего языка :)

Вот схема, которую я хочу получить:
<Report> 
	<Versao>1</Versao> 
	<Details> 
		<Record> 
			<ID>1</ID> 
			<Reference>20171</Reference> 
		</Record> 
		<Record> 
			<ID>2</ID> 
			<Reference>20172</Reference> 
		</Record> 
	</Details> 
</Report>


Что я уже пробовал:

Я уже пробовал это:
XDocument docHeader = new XDocument(
    new XElement("Report",
    new XElement("Versao", "1"),
    new XElement("Details", "")
));

for (int i = 0; i < 2; i++)
{
    var docRecords = new XElement("Record",
                    new XElement("ID", i.ToString()),
                    new XElement("Reference", "2017" + i.ToString())
        );
}

docHeader.Element("Details").Add(docRecords);
using (var writer = new XmlTextWriter("C:\\Reports\\MyReport.xml", new UTF8Encoding(false)))
{
    docHeader.Save(writer);
}

Hilario Simoes

Решено! Большое вам спасибо!!!

1 Ответов

Рейтинг:
4

Muddassir Mohammed

Узел Details является потомком Report поэтому на него нельзя ссылаться напрямую
используйте docHeader.Элемент ("Отчет").Элемент ("детали"). Add (docRecords)

for (int i = 0; i < 2; i++)
{
      var docRecords = new XElement("Record",
                                new XElement("ID", i.ToString()),
                                new XElement("Reference", "2017" + i.ToString())
                    );

    docHeader.Element("Report").Element("Details").Add(docRecords);
}