使用Stax创建XML文件的一部分我有一些String形式的XML。我使用以下命令将其写入Stax输出:
public void addInnerXml(String xml) throws TinyException {
try {
parent.adjustStack(this);
XMLStreamReader2 sr = (XMLStreamReader2) ifact.createXMLStreamReader(new ByteArrayInputStream(xml.getBytes("UTF8")));
for (int type = sr.getEventType(); sr.hasNext(); type = sr.next()) {
switch (type) {
case XMLStreamConstants.COMMENT:
case XMLStreamConstants.DTD:
case XMLStreamConstants.START_DOCUMENT:
case XMLStreamConstants.END_DOCUMENT:
continue;
}
parent.getWriter().copyEventFromReader(sr, false);
}
sr.close();
} catch (XMLStreamException e) {
throw new TinyException("addInnerXml", e);
} catch (UnsupportedEncodingException e) {
throw new TinyException("addInnerXml", e);
}
}
除了在根元素中定义的传入XML中使用的命名空间在内部节点中再次重复之外,一切都很有效。请注意,p前缀重复
< p:sld xmlns:a =" http://schemas.openxmlformats.org/drawingml/2006/main"
的xmlns:P =" HTTP://schemas.openxmlformats.org/presentationml/2006/main"
的xmlns:R =" HTTP://schemas.openxmlformats.org/officeDocument/2006/relationships"> <号码:CSLD> <号码:spTree> <号码:PIC
的xmlns:P =" HTTP://schemas.openxmlformats.org/presentationml/2006/main">
有没有办法将其关闭?
注意:XMLStreamReader2实现了org.codehaus.stax2.typed.TypedXMLStreamReader,实际上是XMLStreamReader。 parent.getWriter()也返回一个XMLStreamReader2。
谢谢 - 戴夫