1

我会用我已经做过的事情来解决问题。所以我有以下 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>

我跳过了不必要的部分(我相信至少如此)。无论如何,有 <places> 包含可变数量的 <place> 在这种特殊情况下它是 23。我执行以下代码:

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

结果,我有 23 个 XElements(位置)的列表,但由于某种原因,我无法获得 <woeid> 内的值波纹管代码不起作用:-(

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

你能帮我得到这些值吗?

[更新]

我想我已经通过从上下文菜单中获取页面源找到了您一直在要求 @LB 的内容,就是这样。你能帮助我吗?

<?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;

现在它只是简单地工作。再次感谢。

4

0 回答 0