【问题标题】:Easiest way to create a complex xml File out of a Object从对象创建复杂 xml 文件的最简单方法
【发布时间】:2015-08-12 14:02:00
【问题描述】:

从对象中创建复杂的 xml 文件的最佳选择是什么?根文件有太多的 6 个孩子,有很多条目。哪些标签的值在不同的文件之间可能会有所不同。

<root>
<child>
    <Child>
        <child>
            <child</child>

StaX、DOMParser 或使用模板。

【问题讨论】:

  • 这取决于你对“最简单”的定义。

标签: java xml


【解决方案1】:

您可以使用 Java Architecture for XML Binding (JAXB) API 来执行此操作。 我写了一个简单的员工类来解释如何使用 JAXB 来实现它。

/*Employee class as root node*/
@XmlRootElement
public class Employee {

private String name;
private int age;
private int id;
private double salary;

public Employee() {
    super();
    // TODO Auto-generated constructor stub
}

public Employee(String name, int age, int id, double salary) {
    super();
    this.name = name;
    this.age = age;
    this.id = id;
    this.salary = salary;
}

/*add as attribute into root node*/
@XmlAttribute
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

/*add as element*/
@XmlElement
public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

@XmlAttribute
public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

@XmlElement
public double getSalary() {
    return salary;
}

public void setSalary(double salary) {
    this.salary = salary;
}

}

在 main 方法中,您可以将此员工对象数据写入 xml 文件。

public static void main(String[] args) throws JAXBException,
        FileNotFoundException {

    JAXBContext contextObj = JAXBContext.newInstance(Employee.class);

    Marshaller marshallerObj = contextObj.createMarshaller();
    marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

    Employee emp1 = new Employee("saman", 23, 001, 2500.00);

    marshallerObj.marshal(emp1, new FileOutputStream("employee.xml"));

}

employee.xml 文件如下:-

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <employee id="1" name="saman">
    <age>23</age>
    <salary>2500.0</salary>
   </employee>

因此,您可以对 java 对象使用注释来构建您的 xml 文件。格式。

【讨论】:

    【解决方案2】:

    我喜欢将这样的东西传递给对象本身。

    您可以编写如下界面:

    public interface XMLWriteable {
    
       /** Write stuff to XML file **/
       public void writeXML( PrintWriter pWriter );
    }
    

    在你的课堂上:

    public class Object2XML implements XMLWriteable{
      ...
      public void writeXML( PrintWriter pWriter ){
        pWriter.println("<ObjectTag>");
        //Write Some values
        pWriter.println("<stringTag>"+value+"</stringTag>");
        //Write other complex XMLWriteable Objects
        XMLWObj.writeXML(pWriter);
        //Close your tag
        pWriter.println("</ObjectTag>");
      }
     }
    

    然后保存对象就很容易了。

    public static void main(String[] args){
      Object2XML obj = new Object2XML();
      //Do something with the Object
      //Save Object
      obj.writeXML(new PrintWriter("your/xml/file"));
    }
    

    这是一种可能的方式。希望我能帮上忙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 2011-11-27
      • 2014-02-03
      • 1970-01-01
      • 2013-06-16
      • 2016-01-03
      相关资源
      最近更新 更多