【发布时间】:2014-05-08 10:00:16
【问题描述】:
我有一个有效的 XSD 和具有不同架构的 xml 字符串。
如果我获取 xml 字符串并尝试通过 xmldocument.validate 使用 xsd 模式进行验证,它不会验证。
dim tmpdoc as new xmldocument()
dim abc as string= file.readalltext("books-debug.xml")
tmpdoc.schemas.add(nothing,"New.xsd")
Dim eventHandler As New ValidationEventHandler(AddressOf ValidationEventHandler)
tmpDoc.Validate(eventHandler)
End Sub
Private Shared Sub ValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)
Select Case e.Severity
Case XmlSeverityType.[Error]
MessageBox.Show("Error: {0}" + e.Message)
Exit Select
Case XmlSeverityType.Warning
MessageBox.Show("Warning {0}" + e.Message)
Exit Select
End Select
End Sub
用于测试的xml books-debug.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<bookstore xmlns="http://myspace">
<debugparameters>
<parameter>
<paramname>paramname1</paramname>
<description>description1</description>
<subsystems>
<subsystem-id>g</subsystem-id>
<subsystem-id>f</subsystem-id>
<subsystem-id>d</subsystem-id>
</subsystems>
</parameter>
<parameter>
<paramname>paramname2</paramname>
<description>description2</description>
<subsystems>
<subsystem-id>f</subsystem-id>
<subsystem-id>g</subsystem-id>
<subsystem-id>d</subsystem-id>
</subsystems>
</parameter>
<parameter>
<paramname>paramname3</paramname>
<description>description3</description>
<subsystems>
<subsystem-id>f</subsystem-id>
<subsystem-id>g</subsystem-id>
<subsystem-id>d</subsystem-id>
</subsystems>
</parameter>
</debugparameters>
</bookstore>
xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="bookstore">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="writer">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="first-name" type="xs:string" />
<xs:element minOccurs="0" name="last-name" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="price" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="genre" type="xs:string" use="required" />
<xs:attribute name="publicationdate" type="xs:date" use="required" />
<xs:attribute name="ISBN" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
【问题讨论】:
-
您的 XML 只有一个元素与您的 XML 相同。您确定这是正确的实例或架构吗?命名空间也完全不同。
-
查看下面的架构是否解决了您的问题。如果没有,请用它编辑您的问题(因为您发布的问题不兼容)。
-
感谢您的回复...我的问题是为什么即使架构与 xml 不同,我也没有收到任何错误
标签: xml vb.net string validation xsd