我在C#中查询web服务,它返回XML,我已经将它解析为一个XDocument。我删除返回统计信息的服务电话和留下这样的事情是一个多余的节点:C#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 只有通过attrN返回attr1而不是attr1。有什么建议么?
替换'字符串[] WS_LookupFields = “attR1位,attR2位” .Split( ' ');'与 '字符串[] WS_LookupFields = “attR2位,attr3” .Split(',');'。请让我知道如果这可以解决您的问题 –
对不起,这是一个错字;不适用于实际的代码。 –