使用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”> <p:cSld> <p:spTree> <p:pic xmlns:p =“http://schemas.openxmlformats.org/presentationml/ 2006 /主“>
有没有办法把它关掉?
注意:XMLStreamReader2实现了org.codehaus.stax2.typed.TypedXMLStreamReader,实际上是XMLStreamReader . parent.getWriter()也返回一个XMLStreamReader2 .
谢谢 - 戴夫