2017-03-23 5 views
0

Ich habe eine XML-Datei, aus der ich nur die Attributwerte im Tag extrahieren muss. Die XML-Art der sieht in dieser StrukturWerte aus einem XML-Dokument extrahieren C#

<customer> 
    <customerMiddleInitial>W</customerMiddleInitial> 
<name> 
     <FirstName>XXXXXXXX</FirstName> 
     <LastName> YYYYYYYY</LastName> 
</name> 
    <customerBirth>1983-01-01</customerBirth> 
    <customerWorkPhone>020 1234567</customerWorkPhone> 
    <customerMobilePhone>0799 1234567</customerMobilePhone> 
    <previousCust>0</previousCust> 
    <timeOnFile>10</timeOnFile> 
    <customerId>CUST123</customerId> 
</customer> 

Also möchte ich alle Details zwischen den Tags extrahieren. Die erwartete Ausgabe sollte alle Kundendetails sein.

Wie kann ich dies in C# implementieren? Jede Hilfe wird geschätzt.

+0

Verwendung von XML in C# analysieren: https://msdn.microsoft.com/fr-fr/library/cc189056(v=vs.95) .aspx – DanielY

+0

http://stackoverflow.com/questions/364253/how-to-deserialize-xml-document Ich denke, dass Sie Ihre Antwort im obigen Link finden werden. –

+0

Ohne irgendeinen versuchten Code, mit dem Sie Probleme hatten, zu starten, ist dies einfach ein Duplikat von vielen älteren 'wie man XML in C# parst' Fragen ... – har07

Antwort

0
XmlDocument DOC = new XmlDocument(); 
DOC.Load("LoadYourXMLHere.xml"); 
XmlNodeList ParentNode = DOC.GetElementsByTagName("customer"); 
foreach (XmlNode AllNodes in ParentNode) 
{ 
if (ParentNode == DOC.GetElementsByTagName("customerMiddleInitial")) 
{ 
    customer.Initial = AllNodes["customerMiddleInitial"].InnerText; 
} 
if (ParentNode == DOC.GetElementsByTagName("name")) 
{ 
    customer.FirstName= AllNodes["FirstName"].InnerText; 
    customer.LastName= AllNodes["LastName"].InnerText; 
} 
if (ParentNode == DOC.GetElementsByTagName("customerBirth")) 
{ 
    customer.Birthdate= AllNodes["customerBirth"].InnerText; 
} 
if (ParentNode == DOC.GetElementsByTagName("customerWorkPhone")) 
{ 
    customer.WorkPhone= AllNodes["customerWorkPhone"].InnerText; 
} 
if (ParentNode == DOC.GetElementsByTagName("customerMobilePhone")) 
{ 
    customer.MobilePhone = AllNodes["customerMobilePhone"].InnerText; 
} 
if (ParentNode == DOC.GetElementsByTagName("previousCust")) 
{ 
    customer.PreviousCust= AllNodes["previousCust"].InnerText; 
} 
if (ParentNode == DOC.GetElementsByTagName("timeOnFile")) 
{ 
    customer.TimeOnFile= AllNodes["timeOnFile"].InnerText; 
} 
if (ParentNode == DOC.GetElementsByTagName("customerId")) 
{ 
    customer.ID= AllNodes["customerId"].InnerText; 
} 
} 

Erstellen Sie ein Kundenmodell, und führen Sie das obige XML-Parsing in C# aus.

Mit freundlichen Grüßen,

Thiyagu Rajendran

** Bitte beachten Sie die Antworten als Antworten markieren, wenn sie und unmark helfen, wenn sie es nicht tun.

0

Zunächst einmal müssen Sie diese answer

sehen Wenn Sie generated Modell nur diesen Code für deserialised xml object.And verwenden danach nur Modell verwenden, um mit Ihren Daten zu arbeiten. Das ist leicht und einfach

public static T FromXml<T>(String xml) 
    { 
     T returnedXmlClass = default(T); 

     try 
     { 
      using (TextReader reader = new StringReader(xml)) 
      { 
       try 
       { 
        returnedXmlClass = 
          (T)new XmlSerializer(typeof(T)).Deserialize(reader); 
       } 
       catch (InvalidOperationException) 
       { 
        // String passed is not XML, simply return defaultXmlClass 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
     } 

     return returnedXmlClass; 
    } 

und

var model = FromXml<customer>(yourXmlString); 
Verwandte Themen