在Java中将原始XML元素动态读取为文本

时间:2011-12-04 15:07:06

标签: java xml stax

假设XML文件具有未知结构(即未知元素和属性名称),例如

<RootElement>
   <Level 1 ...>
        <Level 2 ...>
            ...
        </Level 2>
        <Level 2 ...>
            ...
        </Level 2>
    </Level 1>
    <Level 1 ...>
        <Level 2 ...>
            ...
        </Level 2>
        <Level 2 ...>
            ...
        </Level 2>
    </Level 1>
</RootElement>

有没有办法使用StAX获取每个元素的完整原始文本

至少,如何在第一级完成,即在上面的例子中(忽略漂亮的打印)我们如何在Java String变量中读取以下2个字符串:

"<Level 1 ...><Level 2...>...</Level 2></Level 1>"

"<Level 1 ...><Level 2...>...</Level 2></Level 1>"

2 个答案:

答案 0 :(得分:2)

一起使用XMLStreamReader和XMLStreamWriter来获取(生成)您想要的任何原始XML。看起来你可以为一个更简单的解决方案做一些技巧,但你不能 - 需要解析XML,否则你处于深水中,如果你想破解解析器,通常会实现它们内部缓冲使得正确切断传入流有点毛茸茸的工作。

编辑:使用this question中的解析模式来跟踪关卡。要编写,以自己的方式处理输入中的每个事件类型 - 请注意,您可以对开始元素事件的所有属性和命名空间进行迭代。

答案 1 :(得分:0)

不, XMLStreamReader 允许您使用 getElementText() <获取仅文本 xml节点的文本内容 / strong>,要获得完整的内容,您必须自己阅读文件并获取元素并重新构建XML。

但也许你想要做的就是别的。你为什么不解释为什么需要这个?