C# 使用过滤器从Linq到XML提取CDATA的内部值
我使用以下代码从XML中检索所需的值:C# 使用过滤器从Linq到XML提取CDATA的内部值,c#,xml,linq,C#,Xml,Linq,我使用以下代码从XML中检索所需的值: IEnumerable<ForewordReview> reviews = null; try { reviews = from item in xmlDoc.Descendants("node") select new ForewordReview() { PubDate = item.Element("created").ToString()
IEnumerable<ForewordReview> reviews = null;
try
{
reviews = from item in xmlDoc.Descendants("node")
select new ForewordReview()
{
PubDate = item.Element("created").ToString(),
Isbn = item.Element("isbn").ToString(),
Summary = item.Element("review").ToString()
};
} // ...
我有点了解这里发生了什么,但我不确定这是否与我使用Linq的方式(具体地说,从选定的项目构建一个对象)一致
我是否需要对select语句中的项单独应用此筛选器?否则,我真的不明白这将如何与我正在使用的代码一起工作
一如既往,我感谢您的帮助。:
这也适用于其他数据类型,如int
、float
、DateTime
等:
reviews = from item in xmlDoc.Descendants("node")
select new
{
PubDate = (DateTime)item.Element("created")
};
// Output:
// {
// PubDate = 1/23/2012 12:40:57
// }
.:
这也适用于其他数据类型,如int
、float
、DateTime
等:
reviews = from item in xmlDoc.Descendants("node")
select new
{
PubDate = (DateTime)item.Element("created")
};
// Output:
// {
// PubDate = 1/23/2012 12:40:57
// }
.请记住,以下内容的含义没有区别:
<a>
<b>Hello</b>
<c>& hello again</c>
</a>
你好
&又是你好
及
<a>
<b><![CDATA[Hello]]></b>
<c><![CDATA[& hello again]]></c>
</a>
由于您正在调用ToString()
并获取全部内容-打开和关闭标记、实体引用等仍然是XML形式,因此您必须准备好以XML形式处理它。如果不是,问题不在于您在此处显示的代码,而在于PubDate
可用的代码“2012-01-23 12:40:57”
现在
如果它完全等同于“”,那就不好了
要么更改代码以真正解析XML(框架提供了很多帮助),要么更改代码以自行获取日期并使用
元素(“创建”).Value
检索它。请记住,以下内容的含义没有区别:
<a>
<b>Hello</b>
<c>& hello again</c>
</a>
你好
&又是你好
及
<a>
<b><![CDATA[Hello]]></b>
<c><![CDATA[& hello again]]></c>
</a>
由于您正在调用ToString()
并获取全部内容-打开和关闭标记、实体引用等仍然是XML形式,因此您必须准备好以XML形式处理它。如果不是,问题不在于您在此处显示的代码,而在于PubDate
可以使用的代码2012-01-23 12:40:57“现在
如果它完全等同于“”,那就不好了
要么更改代码以真正解析XML(框架提供了很多帮助),要么更改代码以自行获取日期并使用
元素(“创建”).Value
检索它。因为XNode.ToString
“[r]为该节点返回缩进的XML,“。而显式强制转换提供了检索“所有元素文本和子代文本的连接字符串值”的功能。感谢您提供的最全面的帮助。我对此表示感谢。因为XNode.ToString
”[r]eturns此节点的缩进XML,”。而显式强制转换提供了检索“所有元素文本和子代文本的连接字符串值”的能力。感谢您提供的最全面的帮助。我对此表示感谢。啊,也感谢您。我确实注意到在调试过程中,它似乎抓住了整个标记-因此出现了“to string”.NP.sixlettervariables以另一种方式在我之前加入了,做同样的事情,出于同样的原因,但添加稍微不同的解释并没有什么坏处。这当然没有坏处。另一方面,您对您的解释做了更多。您的语句“更改代码以真正解析XML”,让我真正思考了我在用上面的代码做什么。再次感谢。啊,也谢谢你。我确实注意到在调试中它似乎抓住了整个标记-因此出现了“to String”.NP.sixlettervariables以另一种方式在我之前加入了,做同样的事情,出于同样的原因,但添加稍微不同的解释并没有什么坏处。这当然没有坏处。另一方面,您对您的解释做了更多。您的语句“更改代码以真正解析XML”,让我真正思考了我在用我的上述代码做什么。再次感谢。