我已经设法从一个文件中查询一个 XML 文档,但是我只需要根据传递给我的 C# 的“id”从这个 XML 片段(当然还有它的子节点)中提取一个“过滤器”节点方法:
<outBound>
<body>
<filter id="1">
<name>A. All Portfolios</name>
...
<query>
...
</query>
</filter>
<filter id="2">
<name>A. Busines Portfolios</name>
...
<query>
...
</query>
</filter>
</body>
</outBound>
我从我下载的一些 MS 示例中对我的 L2X 代码进行了建模,但我将如何仅提取过滤器?
XDocument document = XDocument.Load(Server.MapPath("~/xml/portfolioFilters.xml")); //portfolioFiltersResponse //portfolioFilters
var portFilterAll = from x in document.Descendants()
where x.Name == "filter"
select x;
var portFilt = new XElement("filter",
from x in document.Descendants("filter")
where (string)x.Element("name") == filterName
select new XElement("filter",
x.Attribute("id"),
x.Element("name"),
x.Element("type"),
x.Element("userId"),
x.Element("security"),
x.Element("queries")
));
但是,我得到的最终结果是顶部的额外“过滤器”节点,如下所示:
<filter>
<filter id="1">
<name>A. All Portfolios</name>
...
<query>
...
</query>
</filter>
</filter>
有人可以根据“id”属性帮助我稍微调整一下以仅拉出我需要的“过滤器”节点吗?
谢谢你。鲍勃