当前位置: 首页 > 知识库问答 >
问题:

使用jaxb将xml转换为java对象(散集)

巫马淳
2023-03-14

我有以下XML,需要将其转换为java对象

<tests>
    <test-data> 
         <title>BookTitle</title> 
         <book>BookName</book> 
         <count>64018</count> 
         <test-data> 
            <title>Book title1</title> 
            <book>Book Name1</book> 
            <count>5</count> 
         </test-data> 
         <test-data> 
            <title>Book title2</title> 
            <book>Book Name3</book> 
            <count>5</count> 
         </test-data> 
         <test-data> 
            <title>Book title3</title> 
            <book>Book Name3</book> 
            <count>4</count> 
         </test-data> 
    </test-data>
</tests>

我不确定当我使用JAXB转换它时,我的pojo将是什么。

根据我的理解,我创建了以下POJO:

public class Tests {

    TestData testData;

    public TestData getTestData() {
        return testData;
    }

    public void setTestData(TestData testData) {
        this.testData = testData;
    }
}

public class TestData {
    String title;
    String book;
    String count;

    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getBook() {
        return book;
    }
    public void setBook(String book) {
        this.book = book;
    }
    public String getCount() {
        return count;
    }
    public void setCount(String count) {
        this.count = count;
    }
}

请帮帮我。提前感谢。

共有1个答案

鲁涵意
2023-03-14

测试

测试类中,我们将添加一个@XmlRootElement注释。这样做会让JAXB实现知道,当文档以这个元素开头时,它应该实例化这个类。JAXB是例外配置,这意味着您只需要在映射与默认映射不同的地方添加注释。由于testData属性与默认映射不同,我们将使用@xmlement注释。您可能会发现以下教程很有帮助:http://wiki.eclipse.org/EclipseLink/Examples/MOXy/GettingStarted

package forum11221136;

import javax.xml.bind.annotation.*;

@XmlRootElement
public class Tests {

    TestData testData;

    @XmlElement(name="test-data")
    public TestData getTestData() {
        return testData;
    }

    public void setTestData(TestData testData) {
        this.testData = testData;
    }

}

测试数据

在这个类中,我使用了@XmlType注释来指定元素的排序顺序。我添加了一个似乎丢失的testData属性。我还使用了一个@XmlElement注释,其原因与测试类相同。

package forum11221136;

import java.util.List;
import javax.xml.bind.annotation.*;

@XmlType(propOrder={"title", "book", "count", "testData"})
public class TestData {
    String title;
    String book;
    String count;
    List<TestData> testData;

    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getBook() {
        return book;
    }
    public void setBook(String book) {
        this.book = book;
    }
    public String getCount() {
        return count;
    }
    public void setCount(String count) {
        this.count = count;
    }
    @XmlElement(name="test-data")
    public List<TestData> getTestData() {
        return testData;
    }
    public void setTestData(List<TestData> testData) {
        this.testData = testData;
    }
}

演示

下面是一个如何使用JAXB API读取(解组)XML并填充域模型,然后将结果写(封送)回XML的示例。

package forum11221136;

import java.io.File;
import javax.xml.bind.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Tests.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        File xml = new File("src/forum11221136/input.xml");
        Tests tests = (Tests) unmarshaller.unmarshal(xml);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(tests, System.out);
    }

}
 类似资料:
  • 我想使用XML有效载荷,比如: 另一种有效载荷是: 所以我想为创建一个类,其中包含和一个,我可以在其中放置不同类型的对象,所以我尝试了多种类型的对象一个带有的类,但它不允许我具有相同的名称 在这种情况下我能做什么?提前感谢。

  • 我试图将我下面的xml转换为java对象。 这是我的xml: 我需要在"提供者组织"下获取"name"的值。下面是我Java课。 诊所ocument.java 记录目标。JAVA 病人ole.java 供应商组织。JAVA XMLFileParserSAXUtility.java 我得到的结果是 如果我尝试打印syso(临床文件); 结果是临床文档[recordTarget=null] 请帮帮我!

  • 我有一个类,它有一个包含的列表。在我的应用程序中,我在中设置细节,然后添加到的中,然后使用将转换为。 下面代码行的1个illegalAnnotationExc一定类有两个相同名称的属性trainingList

  • 我怎么能转换java对象到xml?我试图转换一个传入的java对象到xml在Spring集成与转换器豆。有没有其他的方法比编组在Jaxb?喜欢使用@TypeConver。或实现转换器类。

  • 我正在尝试使用JAXB从对象构建XML。 但是我错过了一些东西,因为我得到了一个例外: javax.xml.bind.MarshalExc0019-具有链接异常:[com.sun.istack.internal.SAXException2:类雇员及其任何超级类在此上下文中都是已知的。javax.xml.bind.JAXBExc0019:类雇员及其任何超级类在此上下文中都是已知的。]

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 将XML转换为Java对象的最佳方法是什么? 我不希望类似表示,但是想从XML中提取某些数据并填充Java对象。我看过XStream,但并不真正喜欢整个“调低