我想获取“年龄” 元素“name”子元素的值。不是任何其他元素“name”的值(在本例中为“person”的元素“name”child。)
作为输出,我想得到“威廉”和“莎拉”。
这个XML是一个简单的例子,但想象树更深,一些元素的名称在树的某个深度重复。
如果有助于清除混淆,欢迎任何建议和示例使用不同的XML文件。
<?xml version='1.0'?>
<root>
<person>
<name>Jake</name>
<age>18</age>
</person>
<person>
<name>Steve</name>
<age>
<name>William</name>
</age>
</person>
<person>
<name>Nicole</name>
<age>
<name>Sarah</name>
</age>
</person>
</root>
CODE:
public void getE()
{
XmlDocument doc = new XmlDocument();
doc.Load("file.xml");
XmlNodeList elemList = doc.GetElementsByTagName("name");
for (int i = 0; i < elemList.Count; i++)
{
Console.WriteLine(elemList[i].InnerXml);
}
}
答案 0 :(得分:0)
使用Xml Linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
var results = doc.Descendants("person").Select(x => new {
name = x.Element("name"),
age = x.Element("age"),
age_name = x.Element("age").Element("name") == null ? string.Empty : (string)x.Element("age").Element("name")
}).ToList();
}
}
}