XElement - 读取节点 C#

XElement - reading the nodes C#

我有一个 XML 如下所示:

<?xml version="1.0"?>
<productfeed>
    <product>
        <name>x</name>
        <etc>z</etc>
    </product>
    <product>
        <name>x</name>
        <etc>z</etc>
    </product>
</productfeed>

我今天尝试使用 LINQ 和 XElement 从 XML 检索数据。我设法加载了文件,但是我无法访问 productfeed 节点(它 returns 为空)。有趣的是,我可以直接从根节点遍历 product 个节点,而我读到一个节点不应该那样跳过。我是不是理解错了,也许 productfeed 节点已经在根目录中了,但是我怎么才能得到它的纯内容呢?

XElement root = XElement.Load("...path..."); // works
XElement productFeed = root.Element("productfeed"); // returns null
IEnumerable<XElement> products = root.Elements("product"); // works

正式地,您应该将其加载到 XDocument 中。那将有一个 <productfeed> 元素作为根 属性。

XElement让你跳过这一步,它可以同时充当Document和root。修复非常简单:

XElement productFeed = root; //.Element("productfeed"); 

XElementXDocument 解析相同的内容,但 XDocument 有一个(更完整的)文档包装器,在处理 <? > 处理指令等时您将需要它