从 org.eclipse.xsd.XSDSchema 对象获取 XSD 源?
我正在使用 org.eclipse.xsd.XSDSchema 解析 XML 架构文件 (*.xsd),并希望将一些 XSDTypeDefinitions 显示为文字 XSD 源。
这是一个示例架构:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:complexType>
</xs:element>
</xs:schema>
这里有一些用于说明问题的代码:
XSDSchema schema = loadSchemaFromFile(); // not shown
for(XSDElementDeclaration element : schema.getElementDeclarations()){
assert element.getName().equals("shiporder");
String xsdSource = // NOW WHAT DO I NEED TO DO HERE?
String expectedXsdSource = "<xs:element name=\"shiporder\">" +
" <xs:complexType>" +
" <xs:sequence>" +
" <xs:element name=\"orderperson\" type=\"xs:string\"/>" +
" <xs:element name=\"shipto\">" +
" <xs:complexType>" +
" <xs:sequence>" +
" <xs:element name=\"address\" type=\"xs:string\"/>" +
" </xs:sequence>" +
" </xs:complexType>" +
" </xs:element>" +
" </xs:complexType>" +
"</xs:element>";
assert xsdSource.equals(expectedXsdSource);
}
我正在使用 Eclipse 3.7 安装中的以下 jar 文件:
- org.eclipse.xsd_2.7.0.v20110606-0949.jar
- org.eclipse.emf.ecore_2.7.0 .v20110605-0747.jar
- org.eclipse.emf.common_2.7.0.v20110605-0747.jar
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 String.equals 比较两个 XML 文档可能会很危险,因为空格可能不同,即使它不应该影响相等性。
如何使用 isEqualNode?您可以使用 getDocument 方法和以下 指南转换您的架构字符串?
Comparing two XML documents using String.equals might be hazardous as white space might differ even though it ought not affect equality.
How about using isEqualNode? You could convert org.eclipse.xsd.XSDSchema to org.w3c.dom.Document by using the getDocument method and the following guide to convert your schema string?