C#读取XML,如何获取值

时间:2013-12-06 03:23:04

标签: c# xml xmlreader

我是XML新手。需要一些帮助。 我可以得到专业NAME,但是 我如何获得scode的值? JDK ...等等

<pro NAME="JK1233k">
<scode ID="A">JDK-ORPLL-PDILL</scode>
</pro>


XmlReader reader = XmlReader.Create("file.xml");
while (reader.Read())
{
    if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "pro"))
    {
        Console.WriteLine(reader["NAME"]);
    }
    else if((reader.NodeType == XmlNodeType.Element) && (reader.Name == "scode"))
    {
        Console.WriteLine(reader["ID"]);
       //what do I put here to get the value????
    }
}
reader.Close();

2 个答案:

答案 0 :(得分:2)

您正在寻找的是:

Console.WriteLine(reader.ReadInnerXml());

<小时/> 我个人更喜欢LINQ to XML。如果你还没有调查过,你应该这样做。你可以用更干净的方式达到同样的目的。

在您的c#文件开头的

中输入以下内容:

using System.Linq;
using System.Xml.Linq; // loads the linq to xml part

大多数XML文件都比一个元素大得多。因此,您的代码将是这样的:

// Load XML file as an IEnumerable. This allows you to query it.
var xmlDoc = XDocument.Load(file)
    .Elements("pro")
    .Select(pro => new
            {
                Name = pro.Attribute("NAME").Value,
                Scode = pro.Elements("scode").Select(scode => new
                {
                    ID = scode.Attribute("ID").Value,
                    Val = scode.Value
                })
            });

// loop through each <pro> element          
foreach (var pro in xmlDoc)
{
    // Get Pro Name
    Console.WriteLine(pro.Name);

    // loop through each <scode> element inside <pro>
    foreach(var scode in pro.Scode)
    {
        // Get Scode ID:
        Console.WriteLine(scode.ID);

        // Get Scode Value:
        Console.WriteLine(scode.Val);
    }
}

如果您的XML只是 SINGLE 元素,则可以执行以下操作:

// Load XML file:
var pro = XElement.Load("file.xml");

// Get Pro Name
pro.Attribute("NAME").Value;

// Get Scode ID:
pro.Element("scode").Attribute("ID").Value;

// Get Scode Value:
pro.Element("scode").Value;

答案 1 :(得分:1)

请考虑以下代码段...

XDocument doc = XDocument.Load("file.xml");
foreach (XElement element in doc.Descendants("pro"))
{
    Console.WriteLine(element.Attribute("NAME").Value);
}

foreach (XElement element in doc.Descendants("scode"))
{
    Console.WriteLine(element.Value);
}

祝你好运!