gpt4 book ai didi

java - 从 org.eclipse.xsd.XSDSchema 对象获取 XSD 源?

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:07 26 4
gpt4 key购买 nike

我正在使用 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

最佳答案

使用 String.equals 比较两个 XML 文档可能会很危险,因为空格可能不同,即使它不应该影响相等性。

使用 isEqualNode 怎么样? ?您可以使用 getDocument 将 org.eclipse.xsd.XSDSchema 转换为 org.w3c.dom.Document方法和以下guide转换您的模式字符串?

关于java - 从 org.eclipse.xsd.XSDSchema 对象获取 XSD 源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com