在没有Mapper类的情况下读取XML

时间:2017-03-07 18:30:38

标签: java xml xml-parsing jaxb

我需要一些帮助。解析xml个文件。目前,我们正在使用JAXB将XML文件解组为Java POJOs。我们使用'xjc'从POJOs创建了映射器xsd,这些映射器从一开始就没有改变。但我们预测xml的结构会经常发生变化。因此,我们正在考虑寻找JAXB之外的其他选项,因为每当POJOs架构发生更改时我们都无法创建映射器xml。我们尝试了一些解析器,例如DOMSAX,但性能不如JAXB

我们正在寻找

  1. 动态处理不同结构的xml文件,而无需预先定义/创建Java映射器类
  2. 架构验证是可选的。即使模式验证失败,我们也希望将数据解析并持久化到可能的扩展
  3. 需要处理巨大的文件。 DOMParser处理这些文件存在性能问题

1 个答案:

答案 0 :(得分:1)

public static void main(String[] args) throws SAXException, IOException,
        ParserConfigurationException, TransformerException {

    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
            .newInstance();
    DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
    Document document = docBuilder.parse(new File("document.xml"));

    NodeList nodeList = document.getElementsByTagName("*");
    for (int i = 0; i < nodeList.getLength(); i++) {
        Node node = nodeList.item(i);
        if (node.getNodeType() == Node.ELEMENT_NODE) {
            // do something with the current element
            System.out.println(node.getNodeName());
        }
    }
}

这可能会对您有所帮助。已经在dynamically read xml element and value in java

中对此进行了回答