XDocument XML解析问题

时间:2011-10-27 23:32:49

标签: xml linq linq-to-xml

我正在使用XDocument和LINQ来解析一些XML文件,有些工作正常,但其他人没有。调查一下,我找到了不同之处:

工作的文件如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Scenarios xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Scenario>
        ...
    </Scenario>
</Scenarios>

看起来不像这样的文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Scenarios xmlns="http://www.w3.org/2001/XMLSchema-instance">
    <Scenario>
        ...
    </Scenario>
</Scenarios>

如果您没有看到,则缺少的元素是根元素中的:xsi别名。

我只是想知道为什么会这样。除非它们具有该别名,否则XDocument.Load()将不会解析其他方面相同的文件。

提前致谢!

1 个答案:

答案 0 :(得分:2)

在第一个示例中,您说任何带有xsi前缀的节点(元素或属性)都来自XML架构命名空间。

在第二个示例中,您说任何没有任何前缀的节点都在XML架构名称空间中。

如果您的节点具有xsi前缀,则需要像第一个那样进行声明,或者删除这些节点。

编辑:正如svick正确指出的那样,默认情况下XDocument不执行架构验证,因此问题更可能是...包含一些xsi前缀的节点