Java 正在使用流创建xml,缺少编码属性
我使用如下代码创建xml:Java 正在使用流创建xml,缺少编码属性,java,xml,Java,Xml,我使用如下代码创建xml: public static void main(String[] args) { XMLOutputFactory factory = XMLOutputFactory.newInstance(); XMLEventFactory eventFactory = XMLEventFactory.newInstance(); try { XMLEventWriter writer
public static void main(String[] args) {
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
try {
XMLEventWriter writer =
factory.createXMLEventWriter(System.out);
XMLEvent event = eventFactory.createStartDocument("utf-8");
writer.add(event);
event = eventFactory.createStartElement(
"", "", "test");
writer.add(event);
event = eventFactory.createEndElement(
"", "", "test");
writer.add(event);
writer.flush();
writer.close();
} catch (XMLStreamException e) {
e.printStackTrace();
}
}
但在标题中缺少属性编码。怎么了?只有“utf-8”缺少编码。如果指定不同的编码,则该编码将包含在XML声明中。UTF-8是XML的默认编码,因此这不是一个真正的错误 但是,如果您不使用
System.out
,即使是“UTF-8”也会包含编码。例如,使用StringWriter
:
public static void main(String[] args) {
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
try {
StringWriter sw = new StringWriter();
XMLEventWriter writer =
factory.createXMLEventWriter(sw);
XMLEvent event = eventFactory.createStartDocument("utf-8");
writer.add(event);
event = eventFactory.createStartElement(
"", "", "test");
writer.add(event);
event = eventFactory.createEndElement(
"", "", "test");
writer.add(event);
writer.flush();
writer.close();
sw.close();
System.out.println(sw.toString());
} catch (XMLStreamException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
然后结果是:
仅“utf-8”缺少编码。如果指定不同的编码,则该编码将包含在XML声明中。UTF-8是XML的默认编码,因此这不是一个真正的错误
但是,如果您不使用System.out
,即使是“UTF-8”也会包含编码。例如,使用StringWriter
:
public static void main(String[] args) {
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
try {
StringWriter sw = new StringWriter();
XMLEventWriter writer =
factory.createXMLEventWriter(sw);
XMLEvent event = eventFactory.createStartDocument("utf-8");
writer.add(event);
event = eventFactory.createStartElement(
"", "", "test");
writer.add(event);
event = eventFactory.createEndElement(
"", "", "test");
writer.add(event);
writer.flush();
writer.close();
sw.close();
System.out.println(sw.toString());
} catch (XMLStreamException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
然后结果是: