如何强制xmlspy代码在元素上写出合格的命名空间?

时间:2013-07-03 16:36:11

标签: java xml xmlspy altova

我使用XmlSpy 2013从架构生成Java程序代码。我的应用程序基本上从文件中读取xml,修改xml,然后将其写回文件。生成的代码提供了用于执行加载的类和函数:

sampleSchema2 doc = sampleSchema2.loadFromFile(filePath);
// Load the file into Java objects...

并将文件写回:

sampleSchema2 sampleDoc = sampleSchema2.createDocument();
// Populate the doc from the modified Java objects...
sampleDoc.saveToFile(path, true);

我用于生成代码的模式具有以下属性:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:bfrs="http://www.example.com/schema/bfrs" xmlns:cnc="http://www.example.com/schema/cnc" targetNamespace="http://www.example.com/schema/cnc" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2006/05/30" xml:lang="en">

我读入的xml文件使用限定名称空间作为元素,如:

<?xml version="1.0" encoding="UTF-8"?>
<cnc:cnc versionNumber="v.2.2.1" versionDate="2012-04-03" xsi:schemaLocation="http://www.example.com/schema/cnc exampleSchema.xsd" xmlns:cnc="http://www.example.com/schema/cnc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <cnc:Revisions>
        <cnc:Revision>S003</cnc:Revision>
    </cnc:Revisions>

...

但是在我使用上面的saveToFile()再次写出文件之后,所有符合条件的命名空间都会从元素中删除,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<cnc versionNumber="v.2.2.1" versionDate="2012-04-03" xmlns:cnc="http://www.example.com/schema/cnc">
    <Revisions>
        <Revision>S003</Revision>
    </Revisions>

...

有谁知道如何让xmlspy来限定文档上的命名空间,以便它们看起来像我读到的那样?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

事实证明,根据Altova技术支持的回复,使用Altova生成的代码目前是不可能的:

  

感谢您与我们联系。

     

我担心目前无法控制   生成的代码中的名称空间前缀。

     

我会将您的信息转发给我们的开发团队以备将来使用   考虑。

     

致以最诚挚的问候,

     

Mxxxxxxxx Kxxxxx
  支持工程师
  Altova GmbH