- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于我缺乏对文件系统行为的了解,我提前道歉。
我需要读取一个大的 XML 文件,修改它,然后将其写入同一个文件。
这是我设置 XMLEventReader 和 XMLEventWriter 的代码:
XMLInputFactory xmlif = XMLInputFactory.newInstance();
InputStreamReader isr = new InputStreamReader(new FileInputStream(m_cPath.toString()),
StandardCharsets.UTF_8.name());
m_evtr = xmlif.createXMLEventReader(isr);
XMLOutputFactory xmlof = XMLOutputFactory.newInstance();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(m_cPath.toString()), StandardCharsets.UTF_8);
m_evtw = xmlof.createXMLEventWriter(osw);
m_evtf = XMLEventFactory.newInstance();
如果我有一个输入,例如:
<root>
<entry>1</entry>
<insert />
<entry>2</entry>
<entry>3</entry>
<entry>4</entry>
</root>
如果我做下面这样的事情,会安全吗?
try {
while(m_evtr.hasNext()) {
XMLEvent evt = m_evtr.nextEvent();
m_evtw.add(evt);
if( evt.isEndElement()) {
EndElement endElement = evt.asEndElement();
String localName = endElement.getName().getLocalPart();
if( localName.equals("insert") ) {
// create and write new entry elements following the insert element here
}
}
}
} finally {
isr.close();
osw.close();
m_evtr.close();
m_evtw.close();
}
看起来效果不错。但是,我不知道是否应该创建一个新文件,然后复制旧文件。
我担心的是,以这种方式读取和写入同一路径是否安全。特别是因为会有内容插入,然后读取操作需要继续,而看不到新添加的元素。
最佳答案
这不安全。它似乎在微不足道的情况下工作,但很可能在生产负载下以奇怪和壮观的方式爆炸。正确的解决方案是写入新的临时文件,然后在完成后将临时文件重命名为原始文件。 (这也有助于防止部分写入的文件)。
关于java - XMLEventReader 和 XMLEventWriter 在同一个文件上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59617765/
来自XMLEventReader : String getElementText() Reads the content of a text-only element. Precondition: t
我正在使用 XMLEventReader 来解析大型 xml 文件,它在一个项目中工作正常,但是当我在另一个项目中导入具有相同导入的相同类时,它不能很好地解析 xml,并且给出STAX 事件。 下面是
我刚刚尝试利用 StAX 来解析一些简单的 XML 文档 John Lisa ...但是遇到了一个让我抓狂的问题。这是代码
我希望能够将 XML 文件通过管道传输到程序中,并使用 XMLEventReader 读取它。我能为 XMLEventReader 找到的唯一构造函数将 Source 作为参数,但 scala.io.
我在 Scala xml 事件阅读器中发现了一个奇怪的行为。对于这样的 xml: AT&T Bell Labs 0 63739 它为标题生成 EvText
由于我缺乏对文件系统行为的了解,我提前道歉。 我需要读取一个大的 XML 文件,修改它,然后将其写入同一个文件。 这是我设置 XMLEventReader 和 XMLEventWriter 的代码:
我在网上冲浪。我发现 XMLStreamReader 是用于解析 XML 的游标样式 API。 XMLEventReader 是Iterator style API for Parsing XML。有
我在处理一些 .xml 时遇到了一个以前从未见过 的异常。这是损坏的代码: public class UnmarshallProva { public static void main(String[
我有一个 XMLEventReader。它是使用“UTF8”编码从 XMLInputFactory 构建的。我用它来读取“encoding”属性设置为“UTF-8”的 XML 文件。 我已验证 XML
我正在使用 XMLInputFactory 解析传入的 XML 文件,如下所示。如何从 XML 注释中获取文本?我知道如何检测它,但无法将文本输出 XMLInputFactory inputFacto
我有一些现有代码可以解析顶级元素命名空间以确定我们正在查看的 XML 文件类型。 XMLEventReader reader = createXMLEventReader(...); try {
随 Java 一起提供的 Xerces 版本有 bug when dealing with empty XML elements for XML version 1.1 input 。此错误早已在 A
我想编写一些基本上类似于 Reading a big XML file using stax and dom 的代码但使用 XMLEventReader 而不是 XMLStreamReader(我需要
我的环境正在运行 JAVA 1.5 并以这种方式将 JAXB 2.2.7 放入我的 POM 文件中。 javax.xml.bind jaxb-api 2.2.7 但是,当我
谁能解释一下为什么这段代码不能编译: import java.io.FileInputStream; import javax.xml.stream.XMLEventReader; import ja
我正在使用 Stax XML EventReader 来读取 xml。我必须验证 xml 中的一些标签,我正在使用相同的标签。我能够成功读取 xml 中的标记名和字符,但无法读取属性名称和值。我使用的
我无法检查 XML 中的 CDATA 并使用 XMLEventReader 读取它。 以下是示例: HEADERS
为什么 XMLEventReader 扩展原始 Iterator?由于 XMLEventReader.next() 返回 Object,我们必须使用显式转换。不应该是这样吗: public inter
我是一名优秀的程序员,十分优秀!