我使用xsd.exe生成了一组类,并从生成的代码中创建了一个XML文档。我现在想要针对原始xsd验证序列化类实例。
我的XML是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<MyRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-- rest of XML document here
</MyRoot>
我的XSD是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="MyRoot" type="MyRootType"/>
-- MyRootType definition and rest of XSD
</xs:schema>
当我尝试使用XmlReader验证XML时,出现以下错误: “未声明'MyRoot'元素。”
可能出现什么问题?
答案 0 :(得分:1)
在MyRoot元素中,您需要添加XSD的位置。我还建议定义命名空间(除非你有充分的理由不这样做。)
<api:MyRoot xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:api='http://www.myserver.com/schema'
xsi:schemaLocation='http://www.myserver.com/schema http://www.myserver.com/schema/websuiterecord.xsd'>
</api:MyRoot>
这样,验证工具就知道在哪里找到XSD以验证您的XML。
答案 1 :(得分:-2)
这种方法是正确的,但XSD并没有被读取。我纠正了这个问题并且按预期工作了。