使用LINQ to XML进行XML解析:具有相同名称的多个子体
本文关键字:XML 进行 to LINQ 解析 使用 | 更新日期: 2023-09-27 18:20:31
我是使用LINQ进行XML解析的新手。我有以下XML:
<TEAM Action="abcd" TeamID="1234">
<INST InstID="10001" />
<TERM Label="abc" Desc="" Default="" Type="string">Non</TERM>
<A>
<NOTE Label="a">U</NOTE>
<NOTE Label="b">69537f</NOTE>
<NOTE Label="c">Po</NOTE>
<NOTE Label="d">f59/NOTE>
<NOTE Label="e">2014</NOTE>
<NOTE Label="f">Non</NOTE>
<NOTE Label="g">Bilateral</NOTE>
<NOTE Label="h">Jo</NOTE>
<NOTE Label="i">602</NOTE>
</A>
</TEAM>
<TEAM Action="abcdefg" TeamID="2345">
<INST InstID="10003" />
<TERM Label="abc" Desc="" Default="" Type="string">Non</TERM>
<A>
<NOTE Label="a">U</NOTE>
<NOTE Label="b">69537f</NOTE>
<NOTE Label="c">Po</NOTE>
<NOTE Label="d">f59/NOTE>
<NOTE Label="e">2014</NOTE>
<NOTE Label="f">Non</NOTE>
<NOTE Label="g">Simple</NOTE>
<NOTE Label="h">Jo</NOTE>
<NOTE Label="i">602</NOTE>
</A>
</TEAM>
我正在尝试编写一个查询,返回标签为g的NOTE元素的值为Bilateral的所有团队。任何帮助都会被告知。
谢谢是预付款。
首先,您发出的xml
是错误的,它应该是
<TEAM Action="abcd" TeamID="1234">
<INST InstID="10001" />
<TERM Label="abc" Desc="" Default="" Type="string">Non</TERM>
<A>
<NOTE Label="a">U</NOTE>
<NOTE Label="b">69537f</NOTE>
<NOTE Label="c">Po</NOTE>
<NOTE Label="d">f59</NOTE>
<NOTE Label="e">2014</NOTE>
<NOTE Label="f">Non</NOTE>
<NOTE Label="g">Bilateral</NOTE>
<NOTE Label="h">Jo</NOTE>
<NOTE Label="i">602</NOTE>
</A>
</TEAM>
<TEAM Action="abcdefg" TeamID="2345">
<INST InstID="10003" />
<TERM Label="abc" Desc="" Default="" Type="string">Non</TERM>
<A>
<NOTE Label="a">U</NOTE>
<NOTE Label="b">69537f</NOTE>
<NOTE Label="c">Po</NOTE>
<NOTE Label="d">f59</NOTE>
<NOTE Label="e">2014</NOTE>
<NOTE Label="f">Non</NOTE>
<NOTE Label="g">Simple</NOTE>
<NOTE Label="h">Jo</NOTE>
<NOTE Label="i">602</NOTE>
</A>
</TEAM>
那么你需要的是:
var xml=XDocument.Load("d:''test.xml");
var list=xml.Descendants("TEAM")
.Where(x=>x.Element("A").Elements("NOTE")
.Any(n=>n.Attribute("Label").Value=="g" && n.Value=="Bilateral"));