【发布时间】:2017-08-29 14:02:23
【问题描述】:
我在 C# 中查询一个 Web 服务,它返回 XML,我已将其解析为 XDocument。我删除了一个无关的节点,该节点返回有关服务调用的统计信息,并留下如下内容:
<xml>
<element attr1="1" attr2="2" attr3="3" attr4="4" ... attrN="N" />
<element attr1="a" attr2="b" attr3="c" ... attrN="N" />
...
<element attr1="!" attr2="?" attr3=":" attr4="" ... attrN="N />
</xml>
我真的只对检索 attr2 和 attr3 感兴趣,所以我想删除所有其他属性以结束:
<xml>
<element attr2="2" attr3="3" />
<element attr2="b" attr3="c" />
...
<element attr2="?" attr3=":" />
</xml>
但是,这是我正在使用的相关代码,它只是删除 attr1:
String[] WS_LookupFields = "attr2,attr3".Split(',');
var output = XDocument.Parse(WS_Output_Raw);
output.Descendants("system").Remove(); //removes query statistics
foreach (XAttribute attribute in output.Descendants("element").Attributes())
{
if (!Array.Exists<String>(WS_LookupFields, fieldname => attribute.Name == fieldname)) attribute.Remove();
}
问题是 foreach only 返回 attr1 而不是 attr1 通过 attrN。有什么建议吗?
【问题讨论】:
-
将
String[] WS_LookupFields = "attr1,attr2".Split(',');替换为String[] WS_LookupFields = "attr2,attr3".Split(',');。如果能解决您的问题,请告诉我 -
抱歉,打错了;不适用于实际代码。
标签: c# xml linq linq-to-xml