首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML架构文件到字符串

XML架构文件到字符串
EN

Stack Overflow用户
提问于 2013-09-25 07:26:31
回答 1查看 1.1K关注 0票数 2

我希望获得一个XSD文件,其中包含一个带有另一个schemaLocation的重定义元素到一个字符串,其中已经处理了重定义(该字符串应该表示合并的2个XSD文件)。这有可能吗?

(我使用的是Xerces2-j -> java)

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

代码语言:javascript
复制
SchemaFactory schemaFactory = 
  SchemaFactory.newInstance("http://www.w3.org/XML/XMLSchema/v1.1");
Schema schemaXSD = schemaFactory.newSchema( new File ( "example.xsd" ) );

或者让XML解析器处理重定义(这将重新定义作为节点加载,而不打开/加载第二个文件):

代码语言:javascript
复制
DocumentBuilderFactory parserFactory = DocumentBuilderFactory.newInstance();
parserFactory.setNamespaceAware(true);
DocumentBuilder parser = parserFactory.newDocumentBuilder();
return parser.parse(new File ( "example.xsd" ));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-26 15:24:21

让我们先看看我能不能根据我的理解来说明你的问题。

假设您有模式A.xsd:

代码语言:javascript
复制
<?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>

和一个重新定义的A (B重新定义A):

代码语言:javascript
复制
<?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>

我对您所说的a String, where the redefine is already handled (The string should represent the merged 2 XSD files)的理解如下:

代码语言:javascript
复制
<?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>

如果这就是您所要求的,那么我不知道有任何Java解决方案会自动执行所请求的重构。这是可以做到的;据我所知,您必须自己编写代码。

我所知道的唯一工具,特别是专为涵盖您的场景而设计的工具,是我所关联的工具,但它只运行在.NET上(最近它需要.NET 4.0,这使得Mono平台无法访问)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18998734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档