c#XElement.Parse()从yahoo API检索WOEID

时间:2012-11-06 19:45:50

标签: c# xml-parsing

我将与我已经完成的工作进行讨论。所以我有以下XMLfile:

<places yahoo:start="0" yahoo:count="23" yahoo:total="23">
    <place yahoo:uri="http://where.yahooapis.com/v1/place/523920" xml:lang="en-us">
        <woeid>523920</woeid>
        <placeTypeName code="7">Town</placeTypeName>
        <name>Warsaw</name>
        <country type="Country" code="PL" woeid="23424923">Poland</country>
        ...
    </place>
    ...
</places>

我跳过了不必要的部分(我相信至少是这样)。无论如何有&lt; places&gt;其中包含可变数量的&lt; place&gt;在这个特殊情况下它是23.我做了以下代码:

List<XElement> list = XElement.Parse(e.Result).Elements().ToList();

因此,我有23个XElements(地点)的列表,但由于某种原因,我无法得到里面的值&lt; woeid&gt; Bellow代码不起作用: - (

foreach (XElement element in list) {
    String woeid = element.Element("woeid").Value;
    // ... sth else to do with each woeid
}

你能帮助我获得这些价值吗?

[UPDATE]

我想我已经通过从上下文菜单中获取页面源来找到你一直要求的@L.B.这就是它。你能救我吗?

<?xml version="1.0" encoding="UTF-8"?>
<places xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="23" yahoo:total="23">

[解决]

感谢您提供有关命名空间的提示。使用试验和错误方法我已经完成了。答案是,您必须在元素名称前面的括号中添加名称空间。

String woeid = element.Element("{http://where.yahooapis.com/v1/schema.rng}woeid").Value;

现在它只是起作用。再次感谢。

0 个答案:

没有答案