StAXEncoder.java 文件源码

java
阅读 20 收藏 0 点赞 0 评论 0

项目:exificient 作者:
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();
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号