staxreader.java

来自「xstream是一个把java object序列化成xml文件的开源库,轻便好用」· Java 代码 · 共 87 行

JAVA
87
字号
package com.thoughtworks.xstream.io.xml;import com.thoughtworks.xstream.converters.ErrorWriter;import com.thoughtworks.xstream.io.StreamException;import javax.xml.namespace.QName;import javax.xml.stream.XMLStreamConstants;import javax.xml.stream.XMLStreamException;import javax.xml.stream.XMLStreamReader;/** * A reader using the StAX API. * * @author James Strachan * @version $Revision: 578 $ */public class StaxReader extends AbstractPullReader {    private final QNameMap qnameMap;    private final XMLStreamReader in;    public StaxReader(QNameMap qnameMap, XMLStreamReader in) {        this.qnameMap = qnameMap;        this.in = in;        moveDown();    }    protected int pullNextEvent() {        try {            switch(in.next()) {                case XMLStreamConstants.START_DOCUMENT:                case XMLStreamConstants.START_ELEMENT:                    return START_NODE;                case XMLStreamConstants.END_DOCUMENT:                case XMLStreamConstants.END_ELEMENT:                    return END_NODE;                case XMLStreamConstants.CHARACTERS:                    return TEXT;                case XMLStreamConstants.COMMENT:                    return COMMENT;                default:                    return OTHER;            }        } catch (XMLStreamException e) {            throw new StreamException(e);        }    }    protected String pullElementName() {        // let the QNameMap handle any mapping of QNames to Java class names        QName qname = in.getName();        return qnameMap.getJavaClassName(qname);    }    protected String pullText() {        return in.getText();    }    public String getAttribute(String name) {        return in.getAttributeValue(null, name);    }    public String getAttribute(int index) {        return in.getAttributeValue(index);    }    public int getAttributeCount() {        return in.getAttributeCount();    }    public String getAttributeName(int index) {        return in.getAttributeLocalName(index);    }    public void appendErrors(ErrorWriter errorWriter) {        errorWriter.add("line number", String.valueOf(in.getLocation().getLineNumber()));    }    public void close() {        try {            in.close();        } catch (XMLStreamException e) {            throw new StreamException(e);        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?