Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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_Java_Xml_Xml Parsing_Jaxb - Fatal编程技术网

Java 不使用映射器类读取XML

Java 不使用映射器类读取XML,java,xml,xml-parsing,jaxb,Java,Xml,Xml Parsing,Jaxb,我需要一些帮助。解析xml文件。目前,我们正在使用JAXB将XML文件解封送到Javapojo。我们已经使用“xjc”从xsd创建了mapperPOJO,自创建以来一直没有改变。但是我们预测,xml的结构将经常改变。因此,我们正在考虑寻找JAXB以外的选项,因为我们无法在xml模式更改时创建映射器pojo。我们尝试了一些解析器,比如DOM,SAX,但是性能不如JAXB 我们正在寻找, 动态处理不同结构的xml文件,而无需预定义/创建Java映射器类 模式验证是可选的。即使模式验证失败,我们也希望

我需要一些帮助。解析
xml
文件。目前,我们正在使用
JAXB
将XML文件解封送到Java
pojo
。我们已经使用“xjc”从
xsd
创建了mapper
POJO
,自创建以来一直没有改变。但是我们预测,
xml
的结构将经常改变。因此,我们正在考虑寻找
JAXB
以外的选项,因为我们无法在
xml
模式更改时创建映射器
pojo
。我们尝试了一些解析器,比如
DOM
SAX
,但是性能不如
JAXB

我们正在寻找,

  • 动态处理不同结构的xml文件,而无需预定义/创建Java映射器类
  • 模式验证是可选的。即使模式验证失败,我们也希望解析数据并将其持久化到可能的程度
  • 需要处理庞大的文件
    DOMParser
    在处理这些文件时遇到性能问题
  • publicstaticvoidmain(字符串[]args)抛出SAXException、IOException、,
    ParserConfiguration异常,TransformerException{
    DocumentBuilderFactory docBuilderFactory=DocumentBuilderFactory
    .newInstance();
    DocumentBuilder docBuilder=docBuilderFactory.newDocumentBuilder();
    documentdocument=docBuilder.parse(新文件(“Document.xml”);
    NodeList NodeList=document.getElementsByTagName(“*”);
    for(int i=0;i

    这可能对你有帮助。这已经在

    中得到了回答,jaxb在下面使用了一个解析器,比如dom,或者sax(或者可能是stax),所以我希望jaxb至少比stax的sax慢。@MeBigFatGuy好的。性能问题可能出现在我使用
    SAXParser
    的自定义
    事件处理程序上。我在那里使用
    reflection
    api来生成动态对象。请确保使用缓冲流/readerJAXB,考虑到它必须做的事情,它的速度惊人地快,但是如果模式频繁更改,它是一个糟糕的解决方案,这是对的。在通用对象模型(DOM、JDOM、DOM4J、AXIOM等)中,我最喜欢的是XOM。请不要使用“巨大”这样的词。对一些人来说,巨大意味着100Mb,对另一些人来说,它意味着100Gb。我们是工程师,我们喜欢数字。
    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());
            }
        }
    }