我想在Silverlight 3中使用LINQ to XML,因为没有XPath支持。 我有点喜欢它。但我正在研究的项目并不能保证我要查询的所有XML标签都会出现在结果XML文件中。
由于这个原因,我将无法将整个文件作为XDocument查询,因为在一个文档中缺少标记会混淆枚举。 无论如何将XNode强制转换为XDocument?我问这个,因为我无法查询XNode。
答案 0 :(得分:2)
即使使用LINQ-to-XML,你也应该通过 name 来查询,所以我不确定为什么没有任何特定标签应该“混淆枚举” - 简单地说;你可能有一些空值,即
var customer = node.Element("Foo");
// now test for null ;p
您无法将XNode
强制转换为XDocument
,但如果您确定它是元素,那么转换为XElement
应该提供什么你需要。
另请注意,当 value 节点可能丢失时,您可能会发现使用转换运算符最简单:
var auditDate = (DateTime?)e.Element("AuditDate");
如果<AuditDate>
不存在,则会返回空的Nullable<DateTime>
- 同样的方法适用于大多数常见的值类型,或者对于只转换为string
的字符串。