我有这样的XML:
<ITEM>
<RACES>
<TAB>
<NUMBER>1</NUMBER>
<A></A>
<B></B>
</TAB>
<TAB>
<NUMBER>2</NUMBER>
<A></A>
<B></B>
</TAB>
</RACES>
</ITEM>
是否可以检索所有仅属于TAB且具有NUMBER 1的As和Bs节点作为XmlNodeList?
我使用以下代码,但它当然给了我2个节点。我只想要一个节点:
XmlNodeList xnList = xml.SelectNodes("/ITEM/RACES/TAB/A");
答案 0 :(得分:1)
你可以做xmlDocument.SelectNodes(表达式)
如果你需要节点A和amp; B
expression = @"//TAB[NUMBER=1]/A|//TAB[NUMBER=1]/B"
如果您只需要一个节点
expression = @"//TAB[NUMBER=1]/A"
如果你只需要B节点单独
expression = @"//TAB[NUMBER=1]/B"
答案 1 :(得分:0)
尝试如下:
XmlNodeList xnList = xml.SelectNodes("/RACES/TAB");
foreach (XmlNode xn in xnList)
{
int num = xn["NUMBER"].InnerText;
if(num==1)
{
Console.WriteLine("Nodes: {0} {1}", xn["A"], xn["B"]);
}
}
答案 2 :(得分:0)
我强烈推荐Linq到Xml。你可以在一个声明中敲出来:
var nodes_A_and_B = XDocument.Parse(xml)
.Descendants("TAB")
.Where(t => t.Element("NUMBER").Value == "1")
.Select(t => new
{
A = t.Element("A"),
B = t.Element("B")
});
答案 3 :(得分:0)
它会返回你需要的东西
快乐编码
var items = XElement.Parse(xmlelemet)
.Elements("RACES")
.Elements("TAB")
.Where(n => n.Attribute("NUMBER").Value == 1)
.Elements();