Java Xml to Object? - PullRequest
       1

Java Xml to Object?

1 голос
/ 11 октября 2011

Каковы этапы получения объекта из файла XML (имеет XSD) с помощью JAXB в Spring 3 (в maven я использую Java 1.6)? (Каковы шаги и если мне нужно сделать объект модели для моего XML-файла, я новичок в Spring и в этих технологиях)

Что я пробовал:

Я поставил эту зависимость (я не знаю, могу ли я использовать более новую версию):

    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-oxm-tiger</artifactId>
        <version>1.5.4</version>
    </dependency>

и тот

        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <executions>
                <execution>
                    <id>generate-oxm</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <schemaDirectory>src/main/resources/META-INF/xsd</schemaDirectory>
                        <generatePackage>com.aaa.xjc</generatePackage>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <inherited>true</inherited>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

к моему файлу pom.

Я сделал такой класс:

@ конфигурации открытый класс XmlAdapter { @Autowired частный ResourcePatternResolver resourceResolver;

@Bean
public Jaxb2Marshaller oxmMarshaller() throws IOException {
    Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
    marshaller.setContextPath("com.aaa.xjc");
    marshaller.setSchemas(resourceResolver.getResources("classpath:/META-INF/xsd/*.xsd"));
    return marshaller;
}

}

На самом деле я не понимал этот контекстный путь и как вызывать этот метод oxmMarshaller, а также как я могу использовать свой существующий XSD для их проверки. Я пытался это в соответствии с моим предыдущим вопросом: XML для объекта Java Spring 3

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Сначала вам нужно будет запустить xjc на XSD для генерации классов JaxB. Затем вам нужно будет создать эти объекты JaxB, в идеале, используя сгенерированный ObjectFactory. В этот момент вы можете отправить этот объект в JaxB2Marshaller . Если вы хотите вернуться в качестве ответа в веб-приложении, вы можете использовать MarshallingView .

Что касается Maven Deps, все компоненты JaxB будут включены в Java 6. Вам нужно будет правильно управлять Spring Deps. По крайней мере, вам понадобится Spring OXM.

1 голос
/ 11 октября 2011
  1. Запустите xjc в схеме для генерации классов Java. XJC
  2. Используйте JaxB Unmarshaller для анализа файла. Unmarshalling
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...