Java XML架构文件到字符串

Java XML架构文件到字符串,java,xml,xsd,schema,Java,Xml,Xsd,Schema,我想得到一个XSD文件,其中包含一个重定义元素,并将另一个schemaLocation转换为一个字符串,其中重定义已经得到处理(该字符串应该表示合并的2个XSD文件)。 这可能吗 (我正在使用Xerces2-j-->java) 我无法从架构生成文档或有效字符串: SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/XML/XMLSchema/v1.1"); Schema schemaXSD =

我想得到一个XSD文件,其中包含一个重定义元素,并将另一个schemaLocation转换为一个字符串,其中重定义已经得到处理(该字符串应该表示合并的2个XSD文件)。 这可能吗

(我正在使用Xerces2-j-->java)

我无法从架构生成文档或有效字符串:

SchemaFactory schemaFactory = 
  SchemaFactory.newInstance("http://www.w3.org/XML/XMLSchema/v1.1");
Schema schemaXSD = schemaFactory.newSchema( new File ( "example.xsd" ) );
或者让XML解析器处理重定义(这将作为节点加载重定义,而不打开/加载第二个文件):


让我们先看看,根据我的理解,我能否举例说明你的问题

假设您有schema A.xsd:

<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="Base">
        <xsd:sequence>
            <xsd:element name="First"/>
        </xsd:sequence>
    </xsd:complexType>  
</xsd:schema>
如果这就是你要问的,那么我不知道有任何Java解决方案会自动执行所请求的重构。有可能做到这一点;据我所知,您必须自己编写代码

我所知道的唯一一个工具,专门设计用于涵盖您的场景,是我所关联的工具,但它仅在.NET上运行(最近它需要.NET 4.0,这使得Mono平台遥不可及)

<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="Base">
        <xsd:sequence>
            <xsd:element name="First"/>
        </xsd:sequence>
    </xsd:complexType>  
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XSR Module (http://www.paschidev.com)-->
<xsd:schema xmlns="[{no target namespace}]" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="[{no target namespace}]" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:redefine schemaLocation="A.xsd">
        <xsd:complexType name="Base">
            <xsd:complexContent>
                <xsd:extension base="Base">
                    <xsd:sequence>
                        <xsd:element name="Second" minOccurs="0"/>
                    </xsd:sequence>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:redefine>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:annotation>
        <xsd:documentation xmlns="">Generated from "Set1" under "Release1"</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType name="Base">
        <xsd:sequence>
            <xsd:element name="First" type="xsd:anyType"/>
            <xsd:element minOccurs="0" name="Second" type="xsd:anyType"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>