我有一个非常简单的WCF服务运行,它返回以下内容(来自一个基本的新项目)xml:
<ArrayOfSampleItem xmlns="http://schemas.datacontract.org/2004/07/WcfRestService1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<SampleItem>
<Id>1</Id>
<StringValue>Hello</StringValue>
</SampleItem>
</ArrayOfSampleItem>
然后我在Windows Phone 7应用程序中使用它。结果很好但是我在解析xml时遇到了问题。这是我在完成请求后在回调中使用的代码:
XDocument xmlDoc = XDocument.Parse(e.Result);
itemsFetched.ItemsSource = from item in xmlDoc.Descendants("SampleItem")
select new Product()
{
Id = item.Element("Id").Value,
StringValue = item.Element("StringValue").Value
};
当我尝试添加名称空间时,不会使用此填充集合:
XNamespace web = "http://schemas.datacontract.org/2004/07/WcfRestService1";
XDocument xmlDoc = XDocument.Parse(e.Result);
itemsFetched.ItemsSource = from item in xmlDoc.Descendants(web + "SampleItem")
找到该项,但在尝试获取Id值时我得到一个null异常。
非常感谢任何帮助。
答案 0 :(得分:0)
xmlns="..."
将元素及其所有后代放在命名空间中,因此您需要在访问元素的任何位置使用XNamespace
对象web
:
XDocument xmlDoc = XDocument.Parse(e.Result);
XNamespace web = "http://schemas.datacontract.org/2004/07/WcfRestService1";
itemsFetched.ItemsSource = from item in xmlDoc.Descendants(web + "SampleItem")
select new Product()
{
Id = item.Element(web + "Id").Value,
StringValue = item.Element(web + "StringValue").Value
};