Different ways to parse XML

I start when it comes to XML. I created a simple XML file and tried to parse it and assign values ​​to variables. It worked, but the method that I used made me wonder if there are better ways, more elegant, if you like, for this task. Whether there is a?

Here is my xml file:

<start>
<record>
<var1>hello</var1>
<var2>world</var2>
</record>
<record>
<var1>another</var1>
<var2>one</var2>
</record>
</start>

Here is the method I used:

string var1 = "", var2 = "";

using(XmlReader r = XmlReader.Create(file))
{
    while(r.Read())
    {
        if (r.MoveToContent() == XmlNodeType.Element)
        {
            if(r.Name == "record")
            {
                var1 = "";
                var2 = "";
            }
            else if(r.Name = "var1")
                var1 = r.ReadElementString();
            else if(r.Name = "var2")
                var2 = r.ReadElementString();
        }
        else if(r.MoveToContent() == XmlNodeType.EndElement && r.Name == "record")
        {
            Console.WriteLine(var1 + " " + var2);
        }
    }

}
+3
source share
16 answers

I prefer the XmlDocument route:

here's a great article about CodeProject:

http://www.codeproject.com/KB/cpp/parsefilecode.aspx

+1
source

Have you tried Linq To XM L?

, , , :

XElement xmlData = XElement.Load("XmlFile.xml");
        string var1, var2;
        foreach (XElement element in xmlData.Elements("record"))
        {
            var1 = element.Element("var1").Value;
            var2 = element.Element("var2").Value;

            Console.WriteLine(var1 + " " + var2);

        }
+6
+6

, VB XML.

Dim doc = XDocument.Load(file)
For Each element In doc...<record>
    Dim var1 = element.<var1>.Single()
    Dim var2 = element.<var2>.Single()
    Console.WriteLine(var1.Value & var2.Value)
Next
+4

- XmlDocument Xpath - (ish) , , , , . - ( ):

XmlDocument doc = new XmlDocument();
doc.Load(filename);

XmlNodeList records = doc.SelectNodes("/start/record");
foreach(XmlNode n : records)
{
   string var1 = n.SelectSingleNode("var1").InnerText;
   string var2 = n.SelectSingleNode("var2").InnerText;
}
+3

Serialize/DeSerialize. . .

+3

XmlSerializer. XML- , , , . .

+3

, XmlDocument, LINQ to XML XmlSerializer, . XmlReader, . , 4 , XML , , , , API.

XML, XmlSerializer, XML- . , . LINQ to XML .

+3

XML , . , , xml. , Visual Studio XSD, XML . XSD Visual Studio. , :

: XSD path_to_your_xml.xml/o: your_output_directory XML.

, : XSD path_to_your_schema.xsd/c/l: cs/o: your_output_directory .cs , XML .

, , , . . . . , , , xml. "xsd/?" , .

+3
+2

- "Deserialize!, Deserialize!, Deserialize!"

+2

Linq-way XDocument XElement. , XML.

+1

ANTLR 2.x XML ANTXR. XML, , .

. http://javadude.com/tools/antxr/index.html.

0

/, .

- :

[Serializable]
class record {
    string var1 { get; set; }
    string var2 { get; set; }
}

, XmlArrayItemAttribute - MSDN.

!

0

Source: https://habr.com/ru/post/1710036/


All Articles