Возможно, это что-то чрезвычайно простое, но я не могу обойти это, поэтому помощь будет принята:)
У меня есть простой XML-файл, который я хочу проанализировать, и у меня возникла проблемадоступ к значениям элемента.
Это XML-документ, который у меня есть:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<application>
<description>
<![CDATA[ This is the description of the application. ]]>
</description>
<parameters>
<param type="int32" name="testvar1" required="false">10</param>
<param type="string" name="testvar2" required="true" />
<param type="float" name="testvar3">42.00</param>
</parameters>
</application>
Я загружаю документ из текстового поля, например:
var doc = XDocument.Parse(textBox1.Text);
И я используюпростой запрос Linq для фильтрации содержимого:
var parameters = from param in doc.Descendants("param")
select new
{
name = (String)param.Attribute("name"),
type = (String)param.Attribute("type"),
value = (String)param.Value, // Wrong?
};
var data = String.Empty;
foreach (var p in parameters)
{
data += p.name;
data += " -- ";
data += p.type;
data += " -- ";
data += p.value;
data += "\n\r";
}
Вывод выглядит следующим образом:
testvar1 -- int32 --
testvar2 -- string --
testvar3 -- float --
Другими словами, строка value = (String)param.Value
, похоже, не дает желаемого эффекта.
РЕДАКТИРОВАТЬ: Кажется, я не читал правильный файл XML, мой плохой.Однако приведенный ниже вопрос остается в силе ...
Кроме того, следующие строки вызывают исключение NullReferenceException:
var description = (String) doc.Element("description").Value;
Так что, похоже, я не совсем понимаю, как получить значениеЭлементы XML :) Не могли бы вы помочь мне исправить это?
Спасибо.