【问题标题】:Parsing XML data with colon from Windows Phone Store解析来自 Windows Phone 商店的带有冒号的 XML 数据
【发布时间】:2014-08-06 16:40:42
【问题描述】:

我正在从 Windows Phone 商店获取应用程序详细信息,该应用程序会抛出类似于以下内容的 XML: http://marketplaceedgeservice.windowsphone.com/v8/catalog/apps/e80ab889-bef4-415e-bc92-b4c1c59c0249?os=8.0.9903.0&cc=PH&lang=en-US

我的代码如下所示:

XElement app = XElement.Parse(e.Result);
var y = app.Descendants(XName.Get("feed", "http://www.w3.org/2005/Atom")).First();

我正在尝试获取“图像”的值,但由于带有冒号 a:feed 的 XML 标记而无法继续。我读过 XML 命名空间,所以我尝试使用 XName,使用 XML 标记中的 URL,但它仍然不起作用。

【问题讨论】:

    标签: c# xml windows-phone-7


    【解决方案1】:
    XNamespace ns = "http://www.w3.org/2005/Atom";
    var feed = XDocument.Parse(e.Result).Descendants(ns + "feed").First();
    

    编辑

    XNamespace defns = "http://schemas.zune.net/catalog/apps/2008/02";
    var image = XDocument.Parse(e.Result).Descendants(defns + "image").First();
    

    【讨论】:

    • 如何获取图片的价值?如果我使用 icon=feed.Descendants("image").First().Descendants("id").First()。值.ToString();它抛出一个 InvalidOperationException
    • 它有效,谢谢。我使用 var image = XDocument.Parse(e.Result).Descendants(defns + "image").First().Descendants(defns + "id").First().Value;获取 id 的值,这是我真正需要的值。如果您不介意,为什么在 的 XML 标记不包含“xmlns”时必须使用“schemas.zune.net/catalog/apps/2008/02”。我对 XML 并不陌生,但这是我第一次在解析 XML 方面遇到真正的挑战。虽然由于(人类)可读性我更喜欢 XML 而不是 JSON,但我现在开始欣赏 JSON。
    【解决方案2】:

    这应该可以工作...

    XDocument doc = XDocument.Parse(xmlstring) var node = from imagenode in doc.Root.Elements() where imagenode.Name.LocalName.Equals("image") select imagenode;

    【讨论】:

    • 当我得到使用 node.ToString() 时它返回 System.Linq.Enumerable。
    • 因为它获取了所有的图片
    • 是的,没错。例如,如果您想获取第一个的值,可以使用 node.First().Value 或 node.ElementAt(0).Value
    猜你喜欢
    • 2013-05-31
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多