- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在默认 Java 实现中使用 XMLOutputFactory,当输出的文本有换页时,它会生成一个无效的 XML 文件。显然,换页字符必须转义,但 XML 编写器不会转义它。 (也许还有其他应该被转义的字符,也没有被转义)。
这是一个错误吗?是否有解决方法,或者是否有我可以提供给 XML 编写器以更改行为的参数?
我正在写的文本可能有换页,我想将它输出到 XML 中,以便稍后阅读。
这是我的示例代码,\f 是换页符,两者都完全按照 ASCII 12(换页符)编写,没有被转义。当我将输出提供给 XML 解析器时,我在尝试读取换页时遇到错误,“发现无效的 XML 字符(Unicode:0xc)”。
public static void main(String[] args) throws XMLStreamException, FileNotFoundException, Exception {
XMLOutputFactory factory = XMLOutputFactory.newInstance();
try {
XMLStreamWriter writer = factory.createXMLStreamWriter(
new java.io.FileWriter("d:/xyz/ImportXml/out1.xml"));
writer.writeStartDocument();
writer.writeCharacters("\n");
writer.writeStartElement("document");
writer.writeCharacters("\n");
writer.writeCharacters("some text character value \"of the\" field & more text \f in <brackets> here.");
writer.writeCharacters("\n");
writer.writeStartElement("data");
writer.writeAttribute("name", "value \"of the\" field & more text \f in <brackets> here.");
writer.writeEndElement();
writer.writeCharacters("\n");
writer.writeEndElement();
writer.writeCharacters("\n");
writer.writeEndDocument();
writer.flush();
writer.close();
} catch (XMLStreamException e) {
e.printStackTrace();
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
最佳答案
不是错误。这是一个特点。您可以添加字符验证或自己实现 XMLStreamWriter 接口(interface)。
Oracle 文档 http://docs.oracle.com/javase/7/docs/api/javax/xml/stream/XMLStreamWriter.html说:
The XMLStreamWriter does not perform well formedness checking on its input. However the writeCharacters method is required to escape & , < and > For attribute values the writeAttribute method will escape the above characters plus " to ensure that all character content and attribute values are well formed.
对应http://www.w3.org/TR/xml11/#charsetsxml 的限制字符为 [#x1-#x8]、[#xB-#xC]、[#xE-#x1F]、[#x7F-#x84]、[#x86-#x9F]
"\f"是代码为 #x0C 的字符。
关于java - XMLStreamWriter 输出无效字符(不编码换页),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20335496/
我正在使用 XMLStreamWriter 编写 xml。但我不需要序言。 如何在我的输出 xml 中省略这一行。 最佳答案 XMLStreamWriter 在您调用 writeStartDocum
真的没有办法直接使用 javax.xml.stream.XMLStreamWriter (Java SE 6) 编写格式化的 XML 吗???这真是令人难以置信,因为其他 XML API(例如 JAX
我正在研究一个gradle项目,该项目涉及读取和写入xml文件。我在尝试使用XMLStreamWriter将非常长的转义xml字符串写入文件时遇到了一个问题。该字符串最终需要大约半小时才能写入文件,并
我正在使用 StAX 中的 XMLStreamWriter 类从 java 程序生成 XML 文件。我关注了this tutorial并且 XMLFile 已正确生成。如何获取已生成文件的大小? 最佳
我在默认 Java 实现中使用 XMLOutputFactory,当输出的文本有换页时,它会生成一个无效的 XML 文件。显然,换页字符必须转义,但 XML 编写器不会转义它。 (也许还有其他应该被转
我有一个使用 STAX 的小程序,它可以将 XML 文件的内容复制到另一个文件。顺便说一句,我发现了一个关于 XMLStreamWriter 的神秘问题。 当我尝试写很多元素时,写作就成功了。但是当我
我正在尝试编写一个必须如下所示的 XML 元素标记: 我的代码是: doc.writeStartElement("case"); doc.writeAttribute("type", type);
我有一个 spring web 项目,现在应该使用 cxf 和 web 服务来实现。 一个功能是输出一个xml文件。我正在使用 XMLStreamWriter 来完成这项任务。一切正常。 但是当我将一
如何使用 XMLStreamWriter 准确写入我输入的内容?例如,如果我创建脚本标签并用 javascript 填充它,我不希望我所有的单引号都显示为 ' 这是我编写的一个小测试,它没有使用我已有
我正在结合使用 xmlstreamwriter 和 jaxb 来编码一个大的 xml 文件。我正在使用 jaxb 创建子树,但问题是当我编码子树时,它以默认命名空间为前缀,如下所示:
基本上,应用程序将集合的内容写入 XML。为此,我正在使用 XMLStreamWriter (XMLOutputFactory.newInstance().createXMLStreamWriter(
我使用 StAX 创建 XML 文件,然后使用 XSD 验证文件。 我在创建 XML 文件时遇到错误: javax.xml.stream.XMLStreamException: Underlying
这个方法的行为似乎在 Java 8 中发生了变化。我需要一些快速修复来解决我的问题。 问题是我有一些代码在每个名为 的 XML 节点之后写入 CR 和 LF。 .现在(当我们迁移到 Java 8 时
我正在使用此代码获取 XMLStreamWriter: javax.xml.stream.XMLOutputFactory .newInstance() .createXMLStrea
我有一个很大的 XML,我想更新 XML 的特定节点(比如删除重复节点)。 由于 XML 很大,我考虑使用 STAX api 类 - XMLStreamReader。我首先使用 XMLStreamRe
我有许多小的 XML block ,它们应该作为子元素嵌入到一个大的 XML 中。有什么方法可以将这些 block 写入 XMLStreamWriter 而无需转义它们? 最佳答案 以下是处理此问题的
应该简单明了,但我找不到方法 - XMLOutputFactory 只接受 OutputStream、Result 或另一个 Writer 生成一个新的 XMLStreamWriter。 我手头有一个
我创建了一个XML使用STAX和 XMLStreamWriter。效果很好。 我需要将两个 xml 合并在一起。我面临的问题是患者 Pojo 返回给我包含所有患者信息的 XML,如下
我正在使用标准的 JAXB 实现。 这是我的注释类(是一组类的一部分) @XmlType() @XmlAccessorType(FIELD) class MyClass { @XmlValue
如果一个类中有多个自定义 XML 序列化程序 ( XMLStreamWriter ),序列化将失败。 我有两个类(class):CustomClass1 , CustomClass2 .有一个包装类T
我是一名优秀的程序员,十分优秀!