首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >容错XML解析

容错XML解析
EN

Stack Overflow用户
提问于 2012-03-02 01:13:32
回答 1查看 308关注 0票数 0

我有一个解析的XML文档,它不遵循任何类型的固定模式。我需要通过执行以下操作来解析出值:

代码语言:javascript
复制
invoiceDetail.PartNO = invoiceLine.Element(ns + "Item").Element(ns + "ItemID").Element(ns + "ID").Value;

在本例中,invoiceLine为XElement类型。问题是有些节点并不总是存在的,在这些情况下,我更喜欢返回null或空,而不是返回错误。目前有没有什么方法可以做到这一点,或者我应该自己做一个特殊的函数,它接受一个名称空间和一个元素名称列表来尝试解析?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-02 01:17:22

XLINQ已经做到了这一点。

如果没有同名的元素,.Element()将返回null

要避免重复的null检查,请改用.Elements()

代码语言:javascript
复制
invoiceDetail.PartNO = (string)
    invoiceLine.Elements(ns + "Item")
               .Elements(ns + "ItemID")
               .Elements(ns + "ID")
               .SingleOrDefault();

每个Elements()调用都将返回一个IEnumerable<XElement>。如果没有任何匹配的元素,它将返回一个空序列,并且代码的其余部分仍然有效。

.SingleOrDefault()会将最终序列转换为单个元素或null

(string)强制转换调用自定义显式转换,如果元素为空,则该转换应返回null。您可以类似地直接转换为基本值类型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9520758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档