【问题标题】:Java Xml to Object?Java XML 到对象?
【发布时间】:2011-10-10 20:09:32
【问题描述】:

从 XML 文件中获取(模型)对象的步骤是什么?

鉴于 Spring 3 中的 XSD 和 JAXB 依赖项,使用 Java 1.6 使用 Maven 构建。

注意:我是 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 文件。

我做了一个这样的课程:

@Configuration
public class XmlAdapter {
    @Autowired
    private 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 to Object java Spring 3

【问题讨论】:

  • 您有什么具体问题吗?你试过什么?
  • 春天与它没有太大关系。只需阅读 JAXB 教程
  • @Perception 我会解释我的尝试。

标签: java xml spring xsd jaxb


【解决方案1】:

您首先需要在 XSD 上运行 xjc 以生成 JaxB 类。然后您需要创建这些 JaxB 对象,最好使用生成的 ObjectFactory。此时您可以将该对象发送到JaxB2Marshaller。如果您想在 Web 应用程序中作为响应返回,可以使用 MarshallingView

就 maven deps 而言,所有 JaxB 的东西都将包含在 Java 6 中。您需要正确管理 spring deps。至少,您将需要 Spring OXM。

【讨论】:

    【解决方案2】:
    1. 在架构上运行xjc 以生成Java 类。 XJC
    2. 使用 JaxB Unmarshaller 解析文件。 Unmarshalling

    【讨论】:

      猜你喜欢
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 2012-04-21
      • 2010-09-20
      • 1970-01-01
      相关资源
      最近更新 更多