I'm trying to get the "Header" node from this XML document and to output the XML string to the Textbox in C#, here is the input xml file:
<?xml version="1.0" encoding="UTF-8"?>
<nsSAFT:AuditFile xmlns:nsSAFT="mfp:napz:saa:d1111:declaration:v22">
<nsSAFT:Header>
<nsSAFT:AuditFileVersion>XX</nsSAFT:AuditFileVersion>
<nsSAFT:AuditFileCountry>XX</nsSAFT:AuditFileCountry>
<nsSAFT:AuditFileDateCreated>XXX</nsSAFT:AuditFileDateCreated>
<nsSAFT:SoftwareCompanyName>XXX</nsSAFT:SoftwareCompanyName>
<nsSAFT:SoftwareID>XXXX</nsSAFT:SoftwareID>
<nsSAFT:SoftwareVersion>XXX</nsSAFT:SoftwareVersion>
<nsSAFT:Company>
<nsSAFT:RegistrationNumber>XXX</nsSAFT:RegistrationNumber>
<nsSAFT:Name>XXXX</nsSAFT:Name>
<nsSAFT:Address>
<nsSAFT:StreetName>XXX</nsSAFT:StreetName>
<nsSAFT:City>XXXX</nsSAFT:City>
<nsSAFT:PostalCode>XXX</nsSAFT:PostalCode>
<nsSAFT:Country>XXX</nsSAFT:Country>
</nsSAFT:Address>
<nsSAFT:Contact>
<nsSAFT:ContactPerson>
<nsSAFT:FirstName>XXX</nsSAFT:FirstName>
<nsSAFT:LastName>XXXX</nsSAFT:LastName>
</nsSAFT:ContactPerson>
<nsSAFT:Telephone>XXXXX</nsSAFT:Telephone>
</nsSAFT:Contact>
<nsSAFT:BankAccount>
<nsSAFT:IBANNumber>XXXX</nsSAFT:IBANNumber>
</nsSAFT:BankAccount>
</nsSAFT:Company>
<nsSAFT:DefaultCurrencyCode>XXXX</nsSAFT:DefaultCurrencyCode>
<nsSAFT:SelectionCriteria>
<nsSAFT:SelectionStartDate>XXXX</nsSAFT:SelectionStartDate>
<nsSAFT:SelectionEndDate>XXX</nsSAFT:SelectionEndDate>
</nsSAFT:SelectionCriteria>
<nsSAFT:HeaderComment>X</nsSAFT:HeaderComment>
<nsSAFT:SegmentIndex>X</nsSAFT:SegmentIndex>
<nsSAFT:TotalSegmentsInsequence>X</nsSAFT:TotalSegmentsInsequence>
<nsSAFT:TaxAccountingBasis>XXXX</nsSAFT:TaxAccountingBasis>
</nsSAFT:Header>
</nsSAFT:AuditFile>
Here is how I'm trying to get the "Header" node, with the originalDoc.Element("Header");
XDocument originalDoc = XDocument.Load(fileName);
var list = originalDoc.Element("Header");
string output = list.ToString();
richTextBox1.Text = output;
But in the the debugger, the the list variable is always empty?
The result that I'm expecting:
<nsSAFT:Header>
<nsSAFT:AuditFileVersion>XX</nsSAFT:AuditFileVersion>
<nsSAFT:AuditFileCountry>XX</nsSAFT:AuditFileCountry>
<nsSAFT:AuditFileDateCreated>XXX</nsSAFT:AuditFileDateCreated>
<nsSAFT:SoftwareCompanyName>XXX</nsSAFT:SoftwareCompanyName>
<nsSAFT:SoftwareID>XXXX</nsSAFT:SoftwareID>
<nsSAFT:SoftwareVersion>XXX</nsSAFT:SoftwareVersion>
<nsSAFT:Company>
<nsSAFT:RegistrationNumber>XXX</nsSAFT:RegistrationNumber>
<nsSAFT:Name>XXXX</nsSAFT:Name>
<nsSAFT:Address>
<nsSAFT:StreetName>XXX</nsSAFT:StreetName>
<nsSAFT:City>XXXX</nsSAFT:City>
<nsSAFT:PostalCode>XXX</nsSAFT:PostalCode>
<nsSAFT:Country>XXX</nsSAFT:Country>
</nsSAFT:Address>
<nsSAFT:Contact>
<nsSAFT:ContactPerson>
<nsSAFT:FirstName>XXX</nsSAFT:FirstName>
<nsSAFT:LastName>XXXX</nsSAFT:LastName>
</nsSAFT:ContactPerson>
<nsSAFT:Telephone>XXXXX</nsSAFT:Telephone>
</nsSAFT:Contact>
<nsSAFT:BankAccount>
<nsSAFT:IBANNumber>XXXX</nsSAFT:IBANNumber>
</nsSAFT:BankAccount>
</nsSAFT:Company>
<nsSAFT:DefaultCurrencyCode>XXXX</nsSAFT:DefaultCurrencyCode>
<nsSAFT:SelectionCriteria>
<nsSAFT:SelectionStartDate>XXXX</nsSAFT:SelectionStartDate>
<nsSAFT:SelectionEndDate>XXX</nsSAFT:SelectionEndDate>
</nsSAFT:SelectionCriteria>
<nsSAFT:HeaderComment>X</nsSAFT:HeaderComment>
<nsSAFT:SegmentIndex>X</nsSAFT:SegmentIndex>
<nsSAFT:TotalSegmentsInsequence>X</nsSAFT:TotalSegmentsInsequence>
<nsSAFT:TaxAccountingBasis>XXXX</nsSAFT:TaxAccountingBasis>
</nsSAFT:Header>
CodePudding user response:
Please try the following solution.
As @RobertHarvey pointed out, it was a need to add namespace handling.
c#
void Main()
{
const string inputFile = @"e:\Temp\eXtreme.xml";
XDocument xdoc = XDocument.Load(inputFile);
XNamespace ns = xdoc.Root.GetNamespaceOfPrefix("nsSAFT");
var header = xdoc.Descendants(ns "Header").FirstOrDefault();
string output = header.ToString();
}