使用SAX解析具有未知递归量的XML结构

Oct*_*ean 6 java xml recursion parsing sax

我必须使用SAX解析器在JAVA中解析XML结构.

问题是结构是递归的,具有未指定的递归计数.这仍然不是什么大问题,最重要的是我无法利用XML命名空间功能,并且标记在每个递归级别上都是相同的.

这是结构的一个例子.

<?xml version="1.0" encoding="UTF-8"?>
<RootTag>
    <!-- LOADS OF OTHER TAGS -->
    <Tags attribute="value">
        <Tag attribute="value">
            <SomeOtherTag></SomeOtherTag>
            <Tags attribute="value">
                <Tag attribute="value">
                    <SomeOtherTag></SomeOtherTag>
                    <Tags attribute="value">
                        <!-- MORE OF THE SAME STRUCTURE -->
                    </Tags>
                </Tag>
            </Tags>
        </Tag>
    </Tags>
    <!-- LOADS OF OTHER TAGS -->
</RootTag>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,有一个递归,更好的是一个未定义的递归数.现在我的问题是如何为每次递归提取所有数据并将其保存在HashMap例如中.

我可以定义一个ContentHandlerfor的出现Tags并让它在a中提取内容HashMap并将其放回主内容处理程序中定义的master HashMap中,但我不确定这样做是否热.

如何在不使用命名空间的情况下提取和保存递归XML结构的内容?

Nat*_*hes 3

查看这组有关使用 SAX 的 Javaworld 文章。它演示了一种使用 SAX 解析递归 XML 结构的简单方法。它创建一个状态机,显示每个元素可以包含哪些元素。当您的 contentHandler 遍历 xml 时,它会保留一个堆栈,显示它当前所在的元素。