[英]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.