2017-06-01 25 views
0

我通過從這個字符串我只需要選擇節點哪個國家是不是空閒Web請求如何從XMLDocument中選擇特定的數據?

<Shofar Target_="Base" > 
    <RapidOnSite_Pump Key="1" State="Idle" Amount="20" /> 
    <RapidOnSite_Pump Key="2" State="Idle" Amount="15" /> 
    <RapidOnSite_Pump Key="3" State="Despencing" Amount="25"/> 
- <Verb_List> 
    <Verb_Item Key="1" Execute="RapidOnSite_Pump_AdHoc" Result="OK" 
     Detail="All Pumps►5" /> 
    </Verb_List> 

了以下回應。

我的代碼

string responseFromServer = MY_RESPONSE 
    XmlDocument mainxml = new XmlDocument(); 
    mainxml.LoadXml(responseFromServer); 

    XmlNodeList xnList = mainxml .SelectNodes("/Shofar/RapidOnSite_Pump [@State!='Idle']"); 

但是這段代碼我沒有得到質量要求。誰能幫幫我嗎?

+0

你必須使用'XmlDocument'或者你可以使用LINQ to XML嗎? –

+0

什麼。我只是想要求迴應。 –

+0

剛剛檢查了你的代碼 - 它工作正常。一個節點返回 –

回答

1

在聊天中您將顯示真正的xml。它包含必須考慮的命名空間!

mainxml.LoadXml(responseFromServer); 

XmlNamespaceManager manager = new XmlNamespaceManager(mainxml.NameTable); 
manager.AddNamespace("ns", "http://ShofarNexus.com"); 

XmlNodeList xnList = mainxml.SelectNodes("/ns:Shofar/ns:RapidOnSite_Pump [@State!='Idle']", manager); 
+0

非常感謝您的先生。現在它的工作正常。它對我來說是新的知識。非常感謝。 –

0

除非您想保留XmlDocument,否則您可以使用XElement來完成您的工作。

XElement rootElem = XElement.Load(new StringReader(xmlStr)); 
var rapidOnSitePumpWhichAreNotIdle = rootElem.Descendants("RapidOnSite_Pump").Where(e => e.Attribute("State").Value != "Idle"); 

最後你會得到IEnumerable<XElement>可以迭代。

相關問題