繁体   English   中英

如何使用 XElement 在 c# 中读取 xml?

[英]How to read xml in c# with XElement?

我有这个 xml

<Folder.FolderStructure
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.datacontract.org/2004/07/FileSiteAPI.Models">
    <a_attr i:nil="true" />
    <checkedout>false</checkedout>
    <children>
        <Folder.FolderStructure>
            <checkedout>false</checkedout>
            <children />
            <created>2018-11-29T13:58:57</created>
            <edited>2018-11-29T13:58:57</edited>
            <extension>MSG</extension>
            <id>36878331</id>
            <rootfolder>false</rootfolder>
            <searchfolder>false</searchfolder>
            <size>29696</size>
            <state i:nil="true" />
            <version>1</version>
        </Folder.FolderStructure>
        <Folder.FolderStructure>
            <checkedout>false</checkedout>
            <children />
            <created>2019-01-15T10:18:03</created>
            <edited>2019-01-15T10:18:03</edited>
            <extension>DOCX</extension>
            <id>37584622</id>
            <rootfolder>false</rootfolder>
            <searchfolder>false</searchfolder>
            <size>42345</size>
            <state i:nil="true" />
            <version>1</version>
        </Folder.FolderStructure>
        <Folder.FolderStructure>
            <a_attr i:nil="true" />
            <checkedout>false</checkedout>
            <children i:nil="true" />
            <created>0001-01-01T00:00:00</created>
            <edited>0001-01-01T00:00:00</edited>
            <extension i:nil="true" />
            <id>2478514</id>
            <rootfolder>false</rootfolder>
            <searchfolder>false</searchfolder>
            <size>0</size>
            <state i:nil="true" />
            <version>0</version>
        </Folder.FolderStructure>
    </children>
    <created>0001-01-01T00:00:00</created>
    <edited>0001-01-01T00:00:00</edited>
    <extension i:nil="true" />
    <id>2469288</id>
    <rootfolder>false</rootfolder>
    <searchfolder>false</searchfolder>
    <size>72041</size>
    <state i:nil="true" />
    <text>Public</text>
    <version>0</version>
</Folder.FolderStructure>

但是当我解析它并尝试读取 3 个Folder.FolderStructure元素时,它返回的是空集。

            XElement folder_xml = XElement.Parse(xml_str);

            List<XElement> elements = folder_xml.Elements("Folder.FolderStructure").ToList();

            Console.WriteLine(elements.Count);

有谁知道怎么了?

您需要定义命名空间并使用Descendants而不是Elements

XElement folder_xml = XElement.Parse(xml_str);

XNamespace ns = "http://schemas.datacontract.org/2004/07/FileSiteAPI.Models"; 
var elements = folder_xml.Descendants(ns + "Folder.FolderStructure").ToList();

Console.WriteLine(elements.Count);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM