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

如何使用XElement在c#中读取xml?,c#,xml,xelement,C#,Xml,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>

我有这个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>
有人知道怎么回事吗?

您需要定义并使用子体而不是元素:


您正在请求根目录下的元素,但是
文件夹。FolderStructure
是根目录。使用
子体
查找嵌套实例。此外,由于自定义名称空间,元素名称实际上是
{http://schemas.datacontract.org/2004/07/FileSiteAPI.Models}Folder.FolderStructure
。仅使用文件夹。FolderStructure不起作用。签出。谢谢,我只需要创建一个名称空间。
            XElement folder_xml = XElement.Parse(xml_str);

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

            Console.WriteLine(elements.Count);
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);