问题标签 [xmlstreamreader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Stax XMLStreamReader 检查下一个事件而不继续前进
我有一个XML
包含许多事件的大文件。我愿意unmarshal
他们。因为它是一个大文件,我想unmarshal
一个一个地给它们,所以整个文件不会存储在内存中。它适用于某些事件,但由于它无法映射到特定类,因为它已经在下一个事件中,因此对某些事件无效。
注意:我知道XMLEventReader
但他们中的大多数人都提到它不是非常有效的内存,所以我正在尝试使用XMLStreamReader
并完成它。
XML
以下是包含事件的示例文件:
我有 3 个与它们相对应的类,它们将用于unmarshalling
:
以下是我的Main
课程,将用于unmarshalling
:
我面临的问题是 classB
和C
.
- 我需要检查传入
localName
的是否是extension
. - 如果是,
extension
那么我需要检查下一个元素localName
是否也是extension
. - 如果是,那么
class C
如果不是,那么class B
。 - 因为在
Step-2
我已经移动到streamreader.next()
并且如果元素不是extension
那么它无法将它映射到class B
因为我已经移动到next()
元素并且它没有整个类。
我正在寻找一些可以执行以下操作的解决方案:
- 如果第二次验证中的元素不是
extension
,则返回上一个元素,然后将整个类分配给class B
. - 在进行检查时分配
streamReader
to ,以便您前进。但这也失败了。tempreader
tempreader
有没有办法回到流中的前一个元素,否则我该如何解决这个问题?我希望我能够提供一个完整的解释。
java - 有没有办法将 XMLStreamReader 值临时存储在另一个 XMLStreamReader 中以进行验证?
我不确定这是否可能,所以无论如何我都想询问并澄清,因为即使经过大量搜索和尝试,我也无法在这里找到类似的东西。如果发现重复真的很抱歉。
我正在尝试使用XMLStreamReader
. localpart
阅读后,我必须根据我需要将其分配XMLStreamReader
给不同的类进行一些检查。
当我进行少量检查时,我需要检查current localpart
以及next localpart
. 当我尝试检查next localpart
我正在推进到next
元素时XMLStreamReader
。因此,我尝试将其存储current XMLStreamReader
在另一个中temp XMLStreamReader
,但是在分配之后,当我尝试导航到下一个时,我猜current XMLStreamReader
即使它temp XMLStreamReader
正在发生变化,因此我无法执行某些操作。主要是我想JAXB Unmarshalling
在它失败的时候执行它,因为它无法获取类的所有元素。
我知道XMLEventReader
有peek()
但也失败了,所以我试图存储current XMLStreamReader
但它也不起作用,我读到它不是最有效的内存。由于我的 XML 文件可能非常大,我正在尝试使用XMLStreamReader
.
我希望我能够解释这个问题。我想知道是否有办法实现以下任何一项:
- 暂时存放
current XMLStreamReader
在另一个temp XMLStreamReader
,以便以后使用。 - 如果有其他方法可以
peek()
进入next localpart
insideXMLStreamReader
。
从昨天开始我就陷入了这个问题,因此从这里的专家那里获得一些意见真是太好了。
spring-boot - java.lang.OutOfMemoryError:Java 堆空间 Hibernate entityIsPersistent
我正在使用下面的代码读取 5gb 的 XML 文件,并使用 spring dataJpa 将该数据处理到数据库中,这只是我们关闭 inpustream 和 xsr 对象的示例逻辑。
我已经配置了最大 8GB(即 -xms7000m 和 -xmx8000m)的堆内存但是它在保存数据时遇到了下面的休眠堆问题。它插入了大约 700000 个数据,总共 2100000
根据上面的跟踪日志,hibernate save casacade 似乎有些问题,但无法弄清楚,下面是用于将数据保存在数据库中的实体类。
休眠实体映射是否存在占用内存的任何问题
java - 使用 XMLStreamReader 时如何从文件中读取小部分数据?
所以目前我正在XMLStreamReader
阅读我拥有的文件。在文件中有标签<Data> ... </Data>
。这些标签中包含大量的 Base64 编码数据。数据可以大到 20MB。我XMLStreamReader
用来到达这个 <Data>
标签,然后我想部分读取数据并将其写入另一个文件。我基本上是将<Data> ... </Data>
内容传输到另一个文件。如何从小部分获取数据XMLStreamReader
并将其写入另一个文件?是否可以XMLStreamReader
结合某种形式InputStream
和使用byte[]
舒适的尺寸?以下是我当前的代码
基本上,reader.getElementText()
我不想这样做,而是要小部分获取数据(也许通过使用 Byte []?)。是否可以将 XMLStreamReader 转换为 BufferedReader 并逐行读取?是否可以将 BufferedReader 包裹在 XMLStreamReader 周围?请让我知道如何使问题变得更好,因为我是新手
xml-parsing - IllegalArgumentException:输入字节数组在 396 处的结束字节不正确。xmlStreamReader CHARACTERS 事件以错误的顺序读取字符
所以我XMLStreamReader
用来解析一个xml文档,其中包含<Data>....</Data>
我必须逐行提取和解码的标签之间的Base64编码数据。我为XMLInputFactory
:设置了以下属性,xmlInputFactory.setProperty("javax.xml.stream.isCoalescing",true)
以便标签内的所有 Base64 编码文本都在一个事件<Data>....</Data>
中累积。CHARACTER
但是,当我将数据提取到char
大小为 1024 字节的缓冲区中时,字符的顺序会被打乱。而且由于订单被打乱了,我无法对其进行解码。下面是我的代码:
<Data>....</Data>
所以标签之间总共有 23944 个字符。此外,当异常发生sourceStart
在 23552 并且第 396 个字节有错误时。同样,当
sourceStart
在 23552 时,numCopied
值 1024 显然是不正确的,因为我应该只有 23944 个字符,因此if(numCopied < length)
永远不会成为真的。知道为什么会这样吗?此外,要解码的数据是机密的,所以我可能无法分享。对不起!
java - 是否可以在 XMlStreamReader 中设置 CHARACTERS 事件的最大大小?
您好,目前我正在使用 XMLStreamReader 读取文件。我在文件中的两个标签之间有大量数据。因此,我使用CHARACTERS
开始和结束标签之间的事件来处理数据。有没有办法设置单个CHARACTERS
事件中的最大字符数?我有一个内存限制问题并想知道这一点,因为目前CHARACTERS
事件的大小不同。例如,我希望每个CHARACTERS
事件最多有 1024 个字符。谢谢!
java - 为带有“&”字符的字符串创建 XMLStreamReader
我想解组其中包含“&”字符的 xmlString。
有没有办法在不使用 replace/replaceAll 替换字符串中的 '&' 字符的情况下解组字符串?