我正在使用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()将不会解析其他方面相同的文件。
提前致谢!
答案 0 :(得分:2)
在第一个示例中,您说任何带有xsi
前缀的节点(元素或属性)都来自XML架构命名空间。
在第二个示例中,您说任何没有任何前缀的节点都在XML架构名称空间中。
如果您的节点具有xsi
前缀,则需要像第一个那样进行声明,或者删除这些节点。
编辑:正如svick正确指出的那样,默认情况下XDocument不执行架构验证,因此问题更可能是...
包含一些xsi
前缀的节点