【问题标题】:in C# how to select specific Data from an XMLDocument?在 C# 中如何从 XMLDocument 中选择特定数据?
【发布时间】:2017-11-02 10:53:25
【问题描述】:

我通过网络请求得到以下响应

<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']");

但是通过这段代码我没有得到要求。谁能帮帮我?

【问题讨论】:

  • 你必须使用XmlDocument或者你可以使用LINQ to XML?
  • 任何东西。我只想要必要的回应。
  • 刚刚检查了您的代码 - 它工作正常。返回一个节点
  • 你确定吗?为什么我没有得到。让我展示我的完整代码
  • public void GetCartResponse() { string responseFromServer = ""; responseFromServer = RetailLibrary.BusinessObject.Common.WebRequestCall("MyURL"); if (responseFromServer != "") { XmlDocument mainxml = new XmlDocument(); mainxml.LoadXml(responseFromServer); XmlNodeList xnList = mainxml.SelectNodes("/Shofar/RapidOnSite_Pump [@State!='Idle']"); } }

标签: c# xml asp.net-mvc xml-parsing


【解决方案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);

【讨论】:

  • 非常感谢先生。现在它工作正常。它对我来说是新知识。非常感谢。
【解决方案2】:

您可以使用 XElement 完成工作,除非您想坚持使用 XmlDocument。

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

最后你会得到IEnumerable&lt;XElement&gt;,它可以被迭代。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    相关资源
    最近更新 更多