LINQ to XML:是否可以进行 XNode 查询

发布于 2024-09-11 22:31:26 字数 216 浏览 2 评论 0原文

我想在 Silverlight 3 中使用 LINQ to XML,因为没有 XPath 支持。 我已经掌握了窍门。但我正在从事的项目不能保证我将查询的所有 XML 标签都会出现在结果 XML 文件中。

因此,我将无法将整个文件作为 XDocument 进行查询,因为一个文档中缺少标签会使枚举变得混乱。 有没有办法将 XNode 类型转换为 XDocument?我问这个是因为我无法查询 XNode。

I want to use LINQ to XML in Silverlight 3 since there is no XPath support.
I have kind of got the hang of it. But the project I'm working on will not guarantee that all the XML tags I will be querying for will appear in the result XML file.

Due to this I will not be able to query the overall file as XDocument becase the absence of the tag in one document will jumble up the enumeration.
Is there anyway to typecast an XNode to XDocument? I am asking this as I am not able to query the XNode.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

×纯※雪 2024-09-18 22:31:26

即使使用 LINQ-to-XML,您也应该按名称进行查询,所以我不确定为什么缺少任何特定标记会“混淆枚举”——简单地说;你可能有一些空值,即

var customer = node.Element("Foo");
// now test for null ;p

你不能将任意 XNode 转换为 XDocument,但如果你确定它是一个元素,转换为 XElement 应该可以满足您的需求。

另请注意,当节点可能丢失时,您可能会发现使用转换运算符最简单:

var auditDate = (DateTime?)e.Element("AuditDate");

如果不存在存在,这将返回一个空的 Nullable - 相同的方法适用于大多数常见的值类型,或者对于仅转换为 string 的字符串。

Even with LINQ-to-XML you should be querying by name, so I'm not sure why the absence of any particular tag should "jumble up the enumeration" - simply; you might have some nulls, i.e.

var customer = node.Element("Foo");
// now test for null ;p

You can't cast an arbitrary XNode to an XDocument, but if you are sure it is an element, casting to XElement should provide what you need.

Note also that when value nodes may be missing, you might find it easiest to use the conversion operators:

var auditDate = (DateTime?)e.Element("AuditDate");

if <AuditDate> doesn't exist, this will return an empty Nullable<DateTime> - same approach works for most common value-types, or for strings just convert to string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文