【发布时间】:2014-11-03 20:38:05
【问题描述】:
XML im 查询的 sn-p 是
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<metadata created="2014-11-03T18:13:02.769Z" xmlns="http://example.com/ns/mmd-2.0#" xmlns:ext="http://example.com/ns/ext#-2.0">
<customer-list count="112" offset="0">
<customer id="5f6ab597-f57a-40da-be9e-adad48708203" type="Person" ext:score="100">
<name>Bobby Smith</name>
<gender>male</gender>
<country>US</country>
<birth-span>
<start>1965-02-18</start>
<end>false</end>
</birth-span>
我为获取元素而编写的代码是
GetCustomer = from c in XDoc.Descendants(ns + "customer")
select
new Customer
{
Name = c.Element(ns + "name").ToString(),
Gender = Convert.ToString(c.Element(ns + "gender")),
BeginDate = c.Elements("birth-span").Any() ? c.Element("start").Value.ToString() : "No data found"
我遇到的问题是birth-span,如果出生跨度存在,我似乎永远无法获得值(有些记录不包含出生跨度元素)。对于包含birth-span 元素的记录,我添加了不起作用的命名空间变量(抛出对象未设置为实例的错误)
BeginDate = c.Elements(ns + "birth-span").Any() ? c.Element(ns + "start").Value.ToString() : "No data found"
我添加了不同的变体,但要么我得到值 No Data found 要么一个错误(似乎是对象未设置为实例)。谁能看到我做错了什么?
【问题讨论】:
标签: c# xml linq linq-to-xml