我是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();
答案 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);
}
祝你好运!