2009-08-06 17 views
17

Duplikat: Jest to duplikat Best practices to parse xml files with C#? i wielu innych (patrz https://stackoverflow.com/search?q=c%23+parse+xml). Zamknij go i nie odpowiadaj.Parsowanie dokumentu XML w języku C#


Jak analizować dokument XML od dołu do góry w C#?

na przykład:

<Employee> 
    <Name> Test </name> 
    <ID> 123 </ID> 
<Employee> 
<Company> 
    <Name>ABC</company> 
    <Email>[email protected]</Email> 
</company> 

Jak to istnieje wiele nodes..I trzeba zacząć parsowania od dołu do góry like..first analizowania <company> a potem i tak on..How doi go o to w C# ?

+0

Lubię LINQ w [XDocument] (http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx). – DanDan

+0

Można użyć klasy [XmlSerializer] (http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx). To wymaga twojej klasy i może ją łatwo odczytać/zapisać do plików XML. – speps

+0

Zamówienie przestrzeni nazw System.Xml http://msdn.microsoft.com/en-us/library/system.xml%28VS.80%29.aspx – nWorx

Odpowiedz

60

Spróbuj tego:

XmlDocument doc = new XmlDocument(); 
doc.Load(@"C:\Path\To\Xml\File.xml"); 

Lub alternatywnie, jeśli masz XML w ciąg użyć metody LoadXml.

Kiedy już załadowany, można użyć SelectNodes i SelectSingleNode kwerendy specyficzne wartości, na przykład:

XmlNode node = doc.SelectSingleNode("//Company/Email/text()"); 
// node.Value contains "[email protected]" 

Wreszcie, należy pamiętać, że XML jest nieprawidłowy, gdyż nie zawiera pojedynczy węzeł główny. To musi być coś takiego:

<Data> 
    <Employee> 
     <Name>Test</Name> 
     <ID>123</ID> 
    </Employee> 
    <Company> 
     <Name>ABC</Name> 
     <Email>[email protected]</Email> 
    </Company> 
</Data>