#c# #xml
#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);
}
Но это тоже не работает. Я получаю исключение с нулевой ссылкой, в котором указывается, что ссылка на объект не установлена для экземпляра объекта. Есть идеи?
Комментарии:
1. К сожалению, XML-документ является собственностью, так что я не могу опубликовать полное содержимое. Спасибо за всю вашу помощь! Отличные предложения от всех. Я передам это другим в моем отделе, поскольку, похоже, нам придется решать это самостоятельно. 🙂
Ответ №1:
Я думаю, вы путаете Value
свойство класса XmlNode с атрибутом XML с именем «value».
значение является атрибутом в вашем xml, поэтому либо измените свой запрос xpath на
xml.SelectSingleNode("/currentvin/@value").Value
Или использовать Attributes
коллекцию выбранного XmlNode.
Комментарии:
1. Я считаю, что это атрибут, который я ищу. К сожалению, этот код мне не помог. Я все еще получаю исключение нулевой ссылки.
2. Это все, что у вас есть в вашем XML-файле, только один узел? Вы уверены, что действительно загружаете XML-документ? Последнее, что лучше всего, это то, что ваш запрос XPATH неверен.
Ответ №2:
Вы ищете значение атрибута «value» (это несколько), а не значение самого узла, поэтому вам нужно использовать Attribute
свойство:
string xmlVin = xml.SelectSingleNode("/currentvin").Attributes["value"].Value;
Или в первой версии:
XmlNode currentVin = xml.SelectSingleNode("/currentvin");
string xmlVin = currentVin.Attributes["value"].Value;
Комментарии:
1. Это похоже на то, что я пытаюсь получить, но они не сработали. Я все еще получаю исключение с нулевой ссылкой.
2. @admiral142: пожалуйста, отправьте свой полный XML-файл — если вы даже не получите узел, вы можете запросить его неправильно (т. Е. Неправильный путь или ваш XML может использовать пространство имен)
Ответ №3:
Если весь ваш XML содержит только этот узел, то это может быть xml.DocumentElement.Attributes["value"].Value;
Комментарии:
1. На самом деле в XML есть несколько узлов, я просто пытаюсь получить значение атрибута «value» в узле currentvin. 😛
2. Не могли бы вы предоставить полный пример XML-файла?