获取xml节点值作为字符串C#

问题描述:

我一直在试图将XML节点的值拉成一个字符串。这里是XML的样子:获取xml节点值作为字符串C#

<currentvin value="1FTWW31R08EB18119" /> 

我似乎无法弄清楚如何抓住这个值。顺便说一下,我没有写这个XML。到目前为止,我已经尝试了几种方法,包括以下几种:

public void xmlParse(string filePath) 
    { 
     XmlDocument xml = new XmlDocument(); 
     xml.Load(filePath); 
     XmlNode currentVin = xml.SelectSingleNode("/currentvin"); 
     string xmlVin = currentVin.Value; 
     Console.WriteLine(xmlVin);   
    } 

哪个不行。我然后尝试:

public void xmlParse(string filePath) 
    { 
     XmlDocument xml = new XmlDocument(); 
     xml.Load(filePath); 
     string xmlVin = xml.SelectSingleNode("/currentvin").Value; 
     Console.WriteLine(xmlVin); 

    } 

但这也行不通。我得到一个空引用异常,指出对象引用未设置为对象的实例。有任何想法吗?

+0

不幸的是,XML文档是专有的,这样我不能发布的全部内容。感谢你的帮助!每个人的伟大建议。我会把这个升级到我的部门的其他人,因为看起来我们必须在内部解决它。 :) – admiral142

我想你混淆XmlNode类的Value财产,有一个名为“值”的XML属性。

是在XML属性所以无论是修改您的XPath查询是

xml.SelectSingleNode("/currentvin/@value").Value 

或用户的Attributes收集选定的XmlNode的。

+0

我相信这是我的属性寻找。可悲的是,这段代码并没有帮助我。我仍然收到空引用异常。 – admiral142

+0

这就是你在XML文件中只有一个节点吗?你确定你实际上正在加载XML文档吗?最后最好的是你的XPATH查询不正确。 –

+0

当然是!谢谢您的帮助! – admiral142

您正在寻找属性“值”(这是极少数)不是节点本身的价值的价值 - 所以你必须使用Attribute属性:

string xmlVin = xml.SelectSingleNode("/currentvin").Attributes["value"].Value; 

还是在第一个版本:

XmlNode currentVin = xml.SelectSingleNode("/currentvin"); 
string xmlVin = currentVin.Attributes["value"].Value; 
+0

这些肯定看起来像我试图得到,但他们没有工作。我仍然收到一个空引用异常。 – admiral142

+0

@ admiral142:请发布您的完整XML - 如果您甚至没有得到可能以错误方式查询的节点(即错误的路径或您的XML可能使用命名空间) – BrokenGlass

如果你的整个XML只包含这个节点,则可能是xml.DocumentElement.Attributes["value"].Value;

+0

XML中实际上有几个节点,我只是试图在currentvin节点中获取属性“value”的值。 :P – admiral142

+0

那么您能否提供完整的XML文件示例? –