在Java中以文本形式动态读取原始XML元素
假设XML文件具有未知的结构(即未知的元素和属性名称),如在Java中以文本形式动态读取原始XML元素,java,xml,stax,Java,Xml,Stax,假设XML文件具有未知的结构(即未知的元素和属性名称),如 ... ... ... ... 是否有任何方法可以使用StAX获取每个元素的完整原始文本 至少,在第一个级别,即在上面的示例中(忽略漂亮的打印),我们如何读取Java字符串变量中的以下2个字符串: "<Level 1 ...><Level 2...>...</Level 2></Level 1>" “…” 及 “…” 否,XMLStreamReader允许您使用获取纯文本xml节点
...
...
...
...
是否有任何方法可以使用StAX获取每个元素的完整原始文本
至少,在第一个级别,即在上面的示例中(忽略漂亮的打印),我们如何读取Java字符串变量中的以下2个字符串:
"<Level 1 ...><Level 2...>...</Level 2></Level 1>"
“…”
及
“…”
否,XMLStreamReader允许您使用获取纯文本xml节点的文本内容,要获取完整内容,您必须自己读取文件,获取元素并重建xml
但也许你想做的是别的事情。为什么不解释一下为什么需要它呢?将XMLStreamReader和XMLStreamWriter一起使用,以获得(生产)您想要的任何原始XML。看起来你可以为一个更简单的解决方案做一些技巧,但是你做不到——XML需要解析,否则你就陷入了困境,如果你想破解一个解析器,它们通常是通过内部缓冲来实现的,这使得正确地切割传入流有点麻烦
编辑:使用中的解析模式跟踪级别。要编写,请以自己的方式处理输入中的每个事件类型-注意,您可以迭代开始元素事件的所有属性和名称空间。我猜这就是解决方案,但还没有成功地将这两种类型结合起来。任何代码示例都会有所帮助。谢谢该示例读取特定的标记(“无论什么1”),我需要原始XML文本(带有标记)。另外,XMLEventReader似乎更合适。似乎没有类似的示例代码!这个例子可以修改。在开始和结束元素事件的示例中,增加和减少级别,同时也添加对其他类型事件的支持。由于XmlStreamReader api,您似乎已经读过然后写过了,但是它可以实现一个readRaw()方法,该方法读取整个文本,包括元素的子元素。不幸的是,它并不存在。
"<Level 1 ...><Level 2...>...</Level 2></Level 1>"
"<Level 1 ...><Level 2...>...</Level 2></Level 1>"