Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 搜索从xml文档创建的DOM,并将值复制到电子表格/csv_Java_Xml_Dom_Xml Parsing - Fatal编程技术网

Java 搜索从xml文档创建的DOM,并将值复制到电子表格/csv

Java 搜索从xml文档创建的DOM,并将值复制到电子表格/csv,java,xml,dom,xml-parsing,Java,Xml,Dom,Xml Parsing,我已将XML文档读入JavaDOM数据结构。我能够搜索文档并使用For循环查找信息。然后,我可以将父节点和子节点中保存的所有信息打印到终端 然而,我需要能够做的是获得某些元素并将它们打印到电子表格中。以某种方式将值写入csv文档,然后导入Excel 这将节省我很多时间,因为我必须手动将值复制到电子表格中,这将花费我数周的时间。因此,自动化是最好的选择,但我对Java缺乏经验。感谢您的帮助 使用单个DOM解析器实例执行此操作可能非常麻烦。为此,我建议创建一个包含xml文件中所有数据的JavaBea

我已将XML文档读入JavaDOM数据结构。我能够搜索文档并使用For循环查找信息。然后,我可以将父节点和子节点中保存的所有信息打印到终端

然而,我需要能够做的是获得某些元素并将它们打印到电子表格中。以某种方式将值写入csv文档,然后导入Excel


这将节省我很多时间,因为我必须手动将值复制到电子表格中,这将花费我数周的时间。因此,自动化是最好的选择,但我对Java缺乏经验。感谢您的帮助

使用单个DOM解析器实例执行此操作可能非常麻烦。为此,我建议创建一个包含xml文件中所有数据的JavaBean。该类的一个名为
toCsv
的简单方法将迭代所有项目,并返回格式化的内容或将其打印到csv文件。 如果您遵循这种方法,就可以简单地使用
JavaArchitectureforXMLBinding(JAXB)
,它将为您完成XML和Java对象之间的编组和解编组。不再需要可能难以维护的自定义DOM解析器实现。JAXB使用注释,注释定义解析器规则。下面是一个简单的例子:

public interface DataEntity {

    /**
     * NameSpace of XSD schema files.
     */
    public final static String NSP = "https://localhost/project/xsd/";

}


import java.io.Serializable;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import at.fhj.ase.dao.data.validation.ValidationHelper;

/**
 * Represents a product category
 * 
 */
@XmlRootElement(name = "category", namespace = DataEntity.NSP)
public class Category implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -487248720383832971L;

    private Integer id;
    private String name;
    private String description;

    protected Category() {

    }

    public Category(final Integer id, final String name,
            final String description) {
        setId(id);
        setName(name);
        setDescription(description);
    }

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

    private void setId(Integer id) {
        ValidationHelper.validateId(id);

        this.id = id;
    }

    @XmlElement(namespace = DataEntity.NSP)
    public String getName() {
        return name;
    }

    private void setName(String name) {
        ValidationHelper.validateSingleName(name, "name");

        this.name = name;
    }

    @XmlElement(namespace = DataEntity.NSP)
    public String getDescription() {
        return description;
    }

    private void setDescription(String description) {
        ValidationHelper.validateSingleName(description, "description");

        this.description = description;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("Id: ").append(id).append(" Name: ").append(getName())
                .append(" Description: ").append(description);

        return sb.toString();
    }

}
和xml文件作为输入:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <category xmlns="https://localhost/project/xsd/" id="1">
    <description>des_swdevelopment</description>
    <name>swdevelopment</name>
</category>

德斯沃发展
软件开发
以及如何将xml解组为java:

您只需要添加
toCsv
方法就可以了。这种方法将为您节省大量时间,并且非常易于维护