c# - 缺少 xml 根元素

标签 c# xml

我有这个 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());
    }
}

最佳答案

您的 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 的嵌套元素——它们没有。

关于c# - 缺少 xml 根元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19033392/

相关文章:

xml - 使用 xpath 选择具有最大值的属性的节点

java - XML解析为Java Object List<Map<String,String>> sqlParams;

c# - 文本太长时 StatusStrip 标签不可见

C# NetworkStream - 在读取时区分关闭的套接字和 0 字节数组

c# - 如何使用 AsioOut 进行 NAudio 录音和播放

c# - 写入 xml 属性

c# - 向 button_click 函数添加可选参数

c# - 为通用应用程序读取/写入异步文件

java - 我希望 TextView 在一行中结束...如何做

xml - 如何使用 TXMLDocument 向每个节点添加 namespace 前缀