我一直在尝试将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引用未设置为对象的实例。有什么想法吗?
答案 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;