【问题标题】:how should I store xml data in a java class我应该如何将xml数据存储在java类中
【发布时间】:2016-07-31 11:12:54
【问题描述】:

我刚刚开始学习在 java 中阅读 xml。我的问题非常基本。如何在 java 类中存储 xml 元素的属性和子元素。

因此,如果我有一个简单的 xml 文件如下:

<?xml version="1.0"?>
<class>
   <student rollno="393">
      <firstname>dinkar</firstname>
      <lastname>kad</lastname>
      <nickname>dinkar</nickname>
      <marks>85</marks>
   </student>
   <student rollno="493">
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>vinni</nickname>
      <marks>95</marks>
   </student>
   <student rollno="593">
      <firstname>jasvir</firstname>
      <lastname>singn</lastname>
      <nickname>jazz</nickname>
      <marks>90</marks>
   </student>
</class>

如何设计一个java类来存储student数据。如果子元素存储为数据成员,那么我应该如何存储属性rollno

【问题讨论】:

    标签: java xml


    【解决方案1】:

    我建议您使用JAXB 将 XML 文件映射到 POJO 对象。

    【讨论】:

    • 谢谢,这对我来说是一个很好的线索,我认为这对我有很大的帮助
    • 进一步阅读 JAXB 非常适合非常大的 xml 文件。那就是它在内部使用 DOM 或 SAX @Nikolas Charalambidis
    • 我假设文件很大,因为使用的数字很大 (rollno="593")。
    【解决方案2】:

    首先创建一个 Student bean 类,如下所示:

    public class Student {
        private int id;
        private String firstName;
        private String lastName;
        private String nickName;
        private int marks;
    
        // getters and setters
    }
    

    然后您可以使用DOM parser 或SAX parser util 填充数据。

    【讨论】:

    • 我可以理解的少,你的意思是属性和元素都应该是@Bahramdun Adil 类中的数据成员
    • @user3282758 是的,你是对的,但 ID 是唯一的。
    • 如果元素@Bahramdun Adil 有多个属性怎么办
    • 你可以在Student类中为那个元素创建一个字段,没问题。
    【解决方案3】:

    您应该使用如图所示的 TransformerFactory 类:

    try {
                
        Document document = null;
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer = tf.newTransformer();
        DOMSource source = new DOMSource(document);
        File f = new File(fileName + ".xml");
        StreamResult result = new StreamResult(f);
        transformer.transform(source, result);
        
    } catch (TransformerException e) {
        throw e;
    }
    

    请记住,您必须将 TransformerException 添加到方法签名中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      • 2015-03-16
      • 2013-07-04
      • 2020-11-28
      相关资源
      最近更新 更多