我在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(',');'。請讓我知道如果這可以解決您的問題 –
對不起,這是一個錯字;不適用於實際的代碼。 –