Java解析器读取嵌套和冗长的xml

时间:2016-12-27 13:19:27

标签: java xml-parsing nested

我已经浏览了很多Stackoverflow页面和web来决定适合我的要求的解析器​​。 我需要在java中读取嵌套和大的xml文件,因此DOM解析器不适合。我的xml看起来如下(片段) -

   <products>
        <product>
            <productCode></productCode>
            <Code>3002191</Code>
            <anotherCode></anotherCode>
            <entityName>entityName value</entityName>
            <entityName2>entityName value</entityName2>
            <Type>value</Type>
            <List>1</List>
            <SecondCode>124</SecondCode>
            <docInfo>
                <name>value1</name>
                <docName>value</docName>
                <docId>045</docId>
                <type>Full Name</type>
                <class>value</class>
                <docCode>123</docCode>
                <date>07/12/2016</date>
                <countries>
                    <country>India</country>
                </countries>
                <language>EN</language>

            </docInfo>
            <docInfo>
                <name>value1</name>
                <docName>value</docName>
                <docId>1219</docId>
                <type>Full Name</type>
                <class>value</class>
                <docCode>123</docCode>
                <date>07/12/2016</date>
                <countries>
                    <country>India</country>
                </countries>
                <language>EN</language>

            </docInfo>
</product>
<product>
..
</product>
</products>

要求:我需要将产品信息存储到hashmap列表中,以便与其他xmls进行进一步处理。首先,我想使用Stax api来执行此操作。但是元素docInfo具有countries元素,因此可以为多个国家/地区提供多个文档,我无法向后解析以保存另一个文档(具有相同的文档信息但具有国家/地区)。如果我足够清楚,请告诉我

请让我知道哪种解析器可以很好地处理这种情况,我没有这个xml的任何模式。

非常感谢。

1 个答案:

答案 0 :(得分:0)

要解析大量XML,最好使用SAX: https://docs.oracle.com/javase/tutorial/jaxp/sax/parsing.html

您实现了ContentHandler接口,您可以在解析docInfo和后续国家时提供所需的逻辑。