这可能是一些非常简单的,但我不能让我的头周围这样的帮助,将不胜感激:)问题在LINQ查询使用.value的
我有,我想解析一个简单的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元素的值:)你能帮我解决这些问题吗?
谢谢。
谢谢你的答案,但有或没有投我还没有看到任何输出。 – Hamza 2010-12-06 15:52:08
@Hamza:查看我的更新后文章 – abatishchev 2010-12-06 15:56:48