[英]Cannot use a referenced XML schema file (xsd) in a C# project
我定义了一个非常简单的XML模式,名为MySchema
,我将其添加到项目的引用中:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="MySchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="UserList">
<xs:complexType>
<xs:sequence>
<xs:element name="User" type="xs:string" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
我应该能够使用XmlDocument.GetElementById
。
我的示例XML文件是
<?xml version="1.0" encoding="UTF-8"?><UserList id="local"/>
但是,当我运行GetElementById("local")
我仍然得到“NullReferenceException”。
我想我需要做的不仅仅是将xsd文件添加到引用中。 有人能告诉我哪里出错了吗?
如果没有定义DTD或XSD来定义id
是什么,则GetElementById
方法不起作用。
如果您在未显示的代码中定义XSD或DTD,请更新您的问题。
DOM实现必须具有定义哪些属性属于ID类型的信息。 虽然可以在XSD架构或DTD中定义类型ID的属性,但此版本的产品仅支持在DTD中定义的那些。 除非在DTD中定义,否则名称为“ID”的属性不是ID类型。 不知道属性是否为ID类型的实现应该返回Nothing。
http://www.xtremevbtalk.com/showthread.php?t=313101
基于帖子顶部的XSD,我会说你没有将xsd加载到XmlDocument实例中,以便它知道哪个是xs:id
看起来XmlDocument.GetElementById
不支持在XSD架构中定义的ID属性,只支持DTD:
DOM实现必须具有定义哪些属性属于ID类型的信息。 虽然可以在XSD架构或DTD中定义类型ID的属性,但此版本的产品仅支持在DTD中定义的那些。 除非在DTD中定义,否则名称为“ID”的属性不是ID类型。 不知道属性是否为ID类型的实现应该返回null。
您可以将SelectSingleNode
与传统的XPath一起使用,但是:
doc.DocumentElement.SelectSingleNode("//UserList[@id='local']")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.