我有一个非常简单的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 phone7应用程序中使用它。结果返回得很好,但是我在解析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值时,我得到了一个空异常。
任何帮助都将不胜感激。
发布于 2011-05-11 00:38:44
xmlns="..."将元素及其所有子元素放在名称空间中,因此您需要在访问元素的任何地方使用XNamespace object 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
};https://stackoverflow.com/questions/5952502
复制相似问题