我有一个像这样的xml文件:
<Tests>
<Test>
<Name>Test1</Name>
<Type>A</Type>
</Test>
<Test>
<Name>Test2</Name>
<Type>A</Type>
</Test>
<Test>
<Name>Test3</Name>
<Type>B</Type>
</Test>
</Tests>
如何返回一个字符串数组或列表,其中只包含该类型为Test
的{{1}}的名称?
我正在尝试使用此代码,但没有成功!
A
答案 0 :(得分:2)
你不想尝试linq2xml吗?
using System.Xml.Linq;
using System.Linq;
///////////
XElement root = new XElement("Tests",
new XElement("Test",
new XElement("Name", "Test1"),
new XElement("Type", "A")),
new XElement("Test",
new XElement("Name", "Test2"),
new XElement("Type", "A")),
new XElement("Test",
new XElement("Name", "Test3"),
new XElement("Type", "B")));
string[] result = (from xe in root.Elements()
where xe.Element("Type").Value.Equals("A")
select xe.Element("Name").Value).ToArray();
答案 1 :(得分:1)
您问题中的XPath表达式与Name
元素匹配。如果您想要匹配Test
元素,则必须删除/Name
部分:
XPathNodeIterator it = nav.Select("/Tests/Test[Type = 'A']);
如果您想使用XPathNavigator
,可以致电MoveToChild()将导航器指向Name
元素:
foreach (XPathNavigator elemNav in it) {
elemNav.MoveToChild("Name", "");
string name = elemNav.Value;
// Do something with 'name'...
}