public void encode(XMLStreamReader xmlStream) throws XMLStreamException,
EXIException, IOException {
// StartDocument should be initial state
assert (xmlStream.getEventType() == XMLStreamConstants.START_DOCUMENT);
writeStartDocument();
while (xmlStream.hasNext()) {
int event = xmlStream.next();
switch (event) {
case XMLStreamConstants.START_DOCUMENT:
// should have happened beforehand
throw new EXIException("Unexpected START_DOCUMENT event");
case XMLStreamConstants.END_DOCUMENT:
this.writeEndDocument();
break;
case XMLStreamConstants.START_ELEMENT:
QName qn = xmlStream.getName();
String pfx = qn.getPrefix();
writeStartElement(pfx, qn.getLocalPart(), qn.getNamespaceURI());
// parse NS declarations
int nsCnt = xmlStream.getNamespaceCount();
for (int i = 0; i < nsCnt; i++) {
String nsPfx = xmlStream.getNamespacePrefix(i);
nsPfx = nsPfx == null ? Constants.XML_DEFAULT_NS_PREFIX
: nsPfx;
String nsUri = xmlStream.getNamespaceURI(i);
this.writeNamespace(nsPfx, nsUri);
}
// parse attributes
int atCnt = xmlStream.getAttributeCount();
for (int i = 0; i < atCnt; i++) {
QName atQname = xmlStream.getAttributeName(i);
this.writeAttribute(atQname.getPrefix(),
atQname.getNamespaceURI(), atQname.getLocalPart(),
xmlStream.getAttributeValue(i));
}
break;
case XMLStreamConstants.END_ELEMENT:
writeEndElement();
break;
case XMLStreamConstants.NAMESPACE:
break;
case XMLStreamConstants.CHARACTERS:
this.writeCharacters(xmlStream.getTextCharacters(),
xmlStream.getTextStart(), xmlStream.getTextLength());
break;
case XMLStreamConstants.SPACE:
// @SuppressWarnings("unused")
String ignorableSpace = xmlStream.getText();
writeCharacters(ignorableSpace);
break;
case XMLStreamConstants.ATTRIBUTE:
// @SuppressWarnings("unused")
// int attsX = xmlStream.getAttributeCount();
break;
case XMLStreamConstants.PROCESSING_INSTRUCTION:
this.writeProcessingInstruction(xmlStream.getPITarget(),
xmlStream.getPIData());
break;
case XMLStreamConstants.COMMENT:
this.writeComment(xmlStream.getText());
break;
case XMLStreamConstants.DTD:
// TODO DTD
break;
case XMLStreamConstants.ENTITY_REFERENCE:
// TODO ER
break;
default:
System.out.println("Event '" + event + "' not supported!");
}
}
// this.flush();
}
StAXEncoder.java 文件源码
java
阅读 19
收藏 0
点赞 0
评论 0
项目:exificient
作者:
评论列表
文章目录