2

我有这个 xml,我正在从一个 url 读取它,当我查看源代码时,它看起来像这样:

<xml>
    <root>
        <item>
            <id>1</id>
            <name>Testing</name>
        </item>
        <item>
            <id>2</id>
            <name>Testing2</name>
        </item>
    </root>
</xml>

当我运行下面的代码时,它一直说缺少根元素?我确实有一个根元素。

public void myfunction()
{
    WebRequest request = WebRequest.Create("http://www.site.com/file.xml");
    WebResponse response = request.GetResponse();
    Stream dataStream = response.GetResponseStream();

    string[] arr = XDocument.Load(dataStream).Root.Descendants("Name").Elements().Select(element => element.Value).ToArray(); //error says root element missing
    foreach (var item in arr)
    {
        MessageBox.Show(item.ToString());
    }
}
4

1 回答 1

0

您的 xml 文件中没有Name元素。Xml 区分大小写。你应该使用小写name

string[] arr = XDocument.Load(dataStream).Root
                        .Descendants("name")
                        .Select(name => (string)name)
                        .ToArray();

顺便说一句,您的name元素没有嵌套元素。

更新:如果要获取name元素的值,只需将这些元素转换为string. 你也可以Select(name => name.Value)在这里使用。只是不要尝试获取嵌套元素name- 他们没有任何元素。

于 2013-09-26T16:24:15.570 回答