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

时间:2011-10-05 21:07:44

标签: c# xml

我一直在尝试将XML节点的值拉成字符串。这是XML的样子:

<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);

    }

但这也不起作用。我得到一个空引用异常,指出Object引用未设置为对象的实例。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

我认为您将XmlNode类的Value属性与名为“value”的XML属性混淆。

是xml中的一个属性,因此要么将xpath查询修改为

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

或者使用所选XmlNode的Attributes集合。

答案 1 :(得分:1)

您正在寻找属性“值”(这是少数)的值,而不是节点本身的值 - 因此您必须使用Attribute属性:

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

或者在第一个版本中:

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

答案 2 :(得分:0)

如果您的整个XML仅包含此节点,那么它可能是xml.DocumentElement.Attributes["value"].Value;