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

标签 java xml dom xml-parsing

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

但是我需要做的是获取某些元素并将它们打印到电子表格中。因此,以某种方式将值写入 csv 文档,然后我可以将其导入 Excel。

这会节省我很多时间,因为我必须手动将值复制到电子表格中,这会花费我数周的时间。所以自动化是最好的选择,但我对 Java 没有经验。任何帮助表示赞赏。

最佳答案

使用单个 DOM 解析器实例执行此操作可能非常麻烦。为此,我建议创建一个包含 xml 文件中所有数据的 JavaBean。该类的一个名为 toCsv 的简单方法将遍历所有项目并返回格式化内容或将其打印到 csv 文件。 如果您采用这种方法,您可以简单地使用 Java XML 绑定(bind)架构 (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: Interface Unmarshaller

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

关于java - 搜索从 xml 文档创建的 DOM 并将值复制到电子表格/csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18275036/

相关文章:

c# - 使用 C# 解析复杂的 XML

java - axis 在发送 XML 之前会向其添加什么内容?

javascript - 搜索页面中的链接 (js)

java - 另一个 Java 事件问题

java - java中字符流有什么用?

java - 使用适用于 32 位和 64 位 Windows 的 log4j2 配置进行 Windows 事件日志记录

java - 在 javascript 中运行 java

xml - Perl 通过 HTTP 解析 XML 文件并增加几行

jquery - 当使用 Ajax 加载 HTML 时,document.getElementsByTagName 在 IE 中不会出现单词

javascript - JavaScript 宿主对象是如何实现的?