如何将XML元素值保存到变量

时间:2012-12-12 19:35:51

标签: c# xml asp.net-mvc

我的MVC应用程序的一部分是一个控制器操作方法,它将数据POST到Web服务并接收XML响应。我已经想出如何将响应放到XDocument中,但现在我需要查看信息并获取一些节点值。我一直在研究,最接近我可以找到使用XPath的选项。

我想知道这是否是最佳方式,或者你是否建议采用其他方式。我正在使用的XML看起来像:

<HistoryResponse>
  <ResponseType>resultsList</ResponseType>
  <Matches>0</Matches>
  <SessionID>75803234r23df3de</SessionID>
  <RecStart>0</RecStart>
  <ClientCode></ClientCode>
  <Results></Results>
</HistoryResponse>

我需要经历,抓住Matches和SessionID并将值放入变量。

感谢。

3 个答案:

答案 0 :(得分:1)

您可以将xml转换为字典

var xDoc = XDocument.Parse(xmlstring); //XDocument.Load(fileName)
var dict = xDoc.Element("HistoryResponse")
               .Elements()
               .ToDictionary(e => e.Name.LocalName, e => e.Value);

并用作

string sessionID = dict["SessionID"];

答案 1 :(得分:0)

使用 LINQtoXML 。 (您需要导入名称空间System.XML.Linq

string filePath = Server.MapPath(@"../YourFileLocation/somexml.xml");

//you can load the XML from file/stream /string etc...

XElement elem = XElement.Load(filePath);
if (elem != null)
{
   string sessionId=elem.Element("SessionID").Value;
   string matches=elem.Element("Matches").Value;
}

如果要在字符串中获取XML,可以使用Parse方法将其加载到XElement。

string xml = "<HistoryResponse><Item>XML Item A</Item></HistoryResponse>";
XElement elem = XElement.Parse(xml);

答案 2 :(得分:0)

这肯定适用于XPath表达式。查看how to use XPath with XDocument?了解如何操作的信息。