我的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并将值放入变量。
感谢。
答案 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?了解如何操作的信息。