简体   繁体   English

C#读取XML,如何获取值

[英]C# reading XML , how to get the value

I am new to XML. 我是XML的新手。 Need some help. 需要一些帮助。 I can get pro NAME fine but How do I get the value of scode? 我可以获得专业名称,但我如何获得scode的价值? JDK...blah 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();

What you're looking for is: 你在寻找的是:

Console.WriteLine(reader.ReadInnerXml());


I personally prefer LINQ to XML. 我个人更喜欢LINQ to XML。 If you haven't looked into it, you should. 如果你还没有调查过,你应该这样做。 You can achieve the same thing in a cleaner manner. 你可以以更干净的方式实现同​​样的目标。

at the start of your c# file put the following: 在c#文件的开头放置以下内容:

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

Most XML files are much bigger than just one element. 大多数XML文件都比一个元素大得多。 So for that, your code would be something like this: 那么,为此,您的代码将是这样的:

 // 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); } } 

If your XML is only a SINGLE element, you can do this: 如果您的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; 

Consider the following code snippet... 请考虑以下代码段...

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);
}

Good Luck! 祝好运!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM