从 XML 中检索属于特定节点的节点
Retrieve nodes from XML belonging to a specific node
我有一个 XML 这样的:
<ITEM>
<RACES>
<TAB>
<NUMBER>1</NUMBER>
<A></A>
<B></B>
</TAB>
<TAB>
<NUMBER>2</NUMBER>
<A></A>
<B></B>
</TAB>
</RACES>
</ITEM>
是否可以将仅属于 NUMBER 1 的 TAB 的所有 As 和 Bs 节点检索为 XmlNodeList?
我使用以下代码,但它当然给了我 2 个节点。我只想要 1 个节点 :
XmlNodeList xnList = xml.SelectNodes("/ITEM/RACES/TAB/A");
尝试如下:
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"]);
}
}
我向 Xml 强烈推荐 Linq。你可以在一个语句中解决它:
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")
});
这将是return您所需要的
Happy coding
var items = XElement.Parse(xmlelemet)
.Elements("RACES")
.Elements("TAB")
.Where(n => n.Attribute("NUMBER").Value == 1)
.Elements();
你可以做 xmlDocument.SelectNodes(表达式)
如果您同时需要节点 A 和 B
expression = @"//TAB[NUMBER=1]/A|//TAB[NUMBER=1]/B"
如果你只需要一个单独的节点
expression = @"//TAB[NUMBER=1]/A"
如果你只需要单独的B节点
expression = @"//TAB[NUMBER=1]/B"
我有一个 XML 这样的:
<ITEM>
<RACES>
<TAB>
<NUMBER>1</NUMBER>
<A></A>
<B></B>
</TAB>
<TAB>
<NUMBER>2</NUMBER>
<A></A>
<B></B>
</TAB>
</RACES>
</ITEM>
是否可以将仅属于 NUMBER 1 的 TAB 的所有 As 和 Bs 节点检索为 XmlNodeList?
我使用以下代码,但它当然给了我 2 个节点。我只想要 1 个节点 :
XmlNodeList xnList = xml.SelectNodes("/ITEM/RACES/TAB/A");
尝试如下:
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"]);
}
}
我向 Xml 强烈推荐 Linq。你可以在一个语句中解决它:
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")
});
这将是return您所需要的
Happy coding
var items = XElement.Parse(xmlelemet)
.Elements("RACES")
.Elements("TAB")
.Where(n => n.Attribute("NUMBER").Value == 1)
.Elements();
你可以做 xmlDocument.SelectNodes(表达式)
如果您同时需要节点 A 和 B
expression = @"//TAB[NUMBER=1]/A|//TAB[NUMBER=1]/B"
如果你只需要一个单独的节点
expression = @"//TAB[NUMBER=1]/A"
如果你只需要单独的B节点
expression = @"//TAB[NUMBER=1]/B"