我的应用程序的目标是创建符合XSD文件的XML配置文件。 我实现这一目标的计划如下: 1.我从xsd文件中创建了一个ecore模型 2.从这个ecore模型我生成java类(通过genmodel) 3.当前配置实例中需要的类填充值 现在我以某种方式创建了一个XML文件。
从步骤2中的conf.xsd开始,三个不同的文件夹填充了创建的java类:Conf,Conf.impl和Conf.util。通过ConfFactoryImpl.init()我创建了ConfFactory。现在,根据以下文章(How to convert an XMI model-instance of Ecore to XML of the given XSD?),如果我理解正确的话,我可以使用XMLResource以某种方式创建XML文件。但我仍然在努力解决这个问题。我的JAVA非常生疏(过去几年没有使用它),所以我会对任何提示都有所帮助。
答案 0 :(得分:0)
这可能会有所帮助。这是从现有的.XSD
在java中创建XML文件的一个例子XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
jxb:version="2.0">
<xsd:element name="Greetings" type="GreetingListType"/>
<xsd:complexType name="GreetingListType">
<xsd:sequence>
<xsd:element name="Greeting" type="GreetingType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GreetingType">
<xsd:sequence>
<xsd:element name="Text" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="language" type="xsd:language"/>
</xsd:complexType>
</xsd:schema>
Java类:
import java.util.*;
import javax.xml.bind.*;
import hello.*;
public class Hello {
private ObjectFactory of;
private GreetingListType grList;
public Hello(){
of = new ObjectFactory();
grList = of.createGreetingListType();
}
public void make( String t, String l ){
GreetingType g = of.createGreetingType();
g.setText( t );
g.setLanguage( l );
grList.getGreeting().add( g );
}
public void marshal() {
try {
JAXBElement<GreetingListType> gl =
of.createGreetings( grList );
JAXBContext jc = JAXBContext.newInstance( "hello" );
Marshaller m = jc.createMarshaller();
m.marshal( gl, System.out );
} catch( JAXBException jbe ){
// ...
}
}
}
示例:
Hello h = new Hello();
h.make( "Bonjour, madame", "fr" );
h.make( "Hey, you", "en" );
h.marshal();
输出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Greetings>
<Greeting language="fr">
<Text>Bonjour, madame</Text>
</Greeting>
<Greeting language="en">
<Text>Hey, you</Text>