为了创建大型的StAX文件,我们决定使用XML。基本结构是通过使用低级api构建的: createStartDocument()、createStartElement()。这如预期的那样起作用。
但是,在某些情况下,我们希望附加驻留在字符串中的现有XML数据(从数据库检索)。下面的片段说明了这一点:
import java.lang.*;
import java.io.*;
import javax.xml.stream.*;
public class Example {
public static void main(String... args) throws XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
StringWriter writer = new StringWriter();
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(writer);
eventWriter.add(eventFactory.createStartDocument("UTF-8", "1.0"));
eventWriter.add(eventFactory.createStartElement("ns0", "http://example.org", "root"));
eventWriter.add(eventFactory.createNamespace("ns0", "http://example.org"));
//In here, we want to append a piece of XML which is stored in a string variable.
String xml = "<fragments><fragment><data>This is pure text.</data></fragment></fragments>";
eventWriter.add(inputFactory.createXMLEventReader(new StringReader(xml)));
eventWriter.add(eventFactory.createEndDocument());
System.out.println(writer.toString());
}
}使用上面的代码,取决于实现,我们没有得到预期的结果:
<?xml version="1.0" ... <fragments><fragment>... ->,这导致了无效的XML。我还试图通过以下方法追加XML:
eventFactory.createCharacters(xml);这里的问题是,即使XML被追加,<和>也被转换为< and >。因此,这将导致无效的XML。
我是否缺少了一个API,它允许我简单地将字符串附加为XML?
发布于 2017-03-05 08:02:55
如果有必要,您可以首先使用任何StartDocument:
String xml = "<fragments><fragment><data>This is pure text.</data></fragment></fragments>";
XMLEventReader xer = inputFactory.createXMLEventReader(new StringReader(xml));
if (xer.peek().isStartDocument())
{
xer.nextEvent();
}
eventWriter.add(xer);https://stackoverflow.com/questions/42603731
复制相似问题