Click here to Skip to main content
15,895,256 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi...I would like to please you guys to help me creating this xml file...I've tried with this code above but I've got some Errors...even when I declarate docRecords outside of For loop it gives me an Error:
An unhandled exception of type 'System.NullReferenceException' occurred in XMLGenUsingLINQ.exe
Additional information: The object reference not defined as Object Instance...something like that...I've translated from my language :)

Here is the Schema I want to get:
XML
<Report> 
	<Versao>1</Versao> 
	<Details> 
		<Record> 
			<ID>1</ID> 
			<Reference>20171</Reference> 
		</Record> 
		<Record> 
			<ID>2</ID> 
			<Reference>20172</Reference> 
		</Record> 
	</Details> 
</Report>


What I have tried:

I've tried this:
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);
}
Posted
Updated 20-Mar-17 16:12pm
v4
Comments
Hilario Simoes 21-Mar-17 5:37am    
Solved! Thank you so much!!!

1 solution

Details Node is a Descendant of Report so it cannot be referenced directly
use docHeader.Element("Report").Element("Details").Add(docRecords)

C#
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);
}
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900