C# 从XML中提取特定值
我有一个非常复杂的xml 我需要从C# 从XML中提取特定值,c#,xml,winforms,C#,Xml,Winforms,我有一个非常复杂的xml 我需要从 selectSingleNode(@"/TimeInTransitResponse/TransitResponse/ServiceSummary/EstimatedArrival/BusinessTransitDays").InnerText) 但是这个位置大约有7个条目,所以它只返回我需要的第一个和最后一个。您可以使用index和inside,您可以将其放入last()函数-类似于这样: "/TimeInTransitResponse/TransitRes
selectSingleNode(@"/TimeInTransitResponse/TransitResponse/ServiceSummary/EstimatedArrival/BusinessTransitDays").InnerText)
但是这个位置大约有7个条目,所以它只返回我需要的第一个和最后一个。您可以使用index和inside,您可以将其放入last()函数-类似于这样:
"/TimeInTransitResponse/TransitResponse/ServiceSummary/EstimatedArrival/BusinessTransitDays[last()]"
请参阅MSDN中的XPath函数。改用
SelectNodes
:
Dim nodeList As XmlNodeList = root.SelectNodes(@"/TimeInTransitResponse/TransitResponse/ServiceSummary/EstimatedArrival/BusinessTransitDays")
Dim lastNode As XmlNode = nodeList.Item(nodeList.Count - 1)
Dim lastNodeValue As Decimal = Convert.ToDecimal(lastNode.InnerText)
然后选择列表中的最后一个节点。如何确保它始终是最后一个节点我需要的节点将始终在响应中并且始终是最后一个节点,但我永远不知道是否会收到1、2、3、4、5、6或7个条目。节点列表将有一个
计数
,只需使用Count-1
。我将更新我的答案。如何将最后一个节点转换为十进制?@MeghanGibbs,这显然是另一个被问了很多次的问题。请先考虑寻找答案。另外,不要忘记对答案进行投票/接受您认为有用的答案。感谢您的回复,但它根本不适用于vs错误“错误1当前上下文中不存在名称'Last'”修复了指向MSDN的XPath和aded链接(比原来的W3C更容易阅读-)不确定为什么会出现错误。括号的目的是得到整体的最后一个元素,而不是第一个估计数的最后一个元素。考虑这个例子:XMLDop.LoadXml(“+”“+”“ABC”+“+”“+”“XZ”+“+”);WriteLine(xmlDocument.SelectSingleNode(“/root/element/child[last()]”);Console.WriteLine(xmlDocument.SelectSingleNode(“(/root/element/child)[last()]”);第一个将输出“abc”,而第二个将输出“xyz”