StAX

来源:互联网 发布:python 模 编辑:程序博客网 时间:2024/05/16 14:44

Streaming API for XML (StAX) is an application programming interface (API) to read and write XML documents, originating from the Java programming language community.

下面是IBM的关于StAX的文章,大家可以参考一下。

http://www.ibm.com/developerworks/library/x-stax1/index.html


然后是一个简单的例子。

以下面这个xml为例:

<?xml version="1.0"?>
<company>
    <staff>
        <firstname>yong</firstname>
        <lastname>mook kim</lastname>
        <nickname>mkyong</nickname>
        <salary>100000</salary>
        <salary1>111111</salary1>
    </staff>
    <staff>
        <firstname>low</firstname>
        <lastname>yin fong</lastname>
        <nickname>fong fong</nickname>
        <salary>200000</salary>
    </staff>
</company>


代码:

从代码中可以看到StAX并没有使用什么特殊类。

package markey.testng;


import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;

/**
 * This program demonstrates how to use a StAX parser. The program prints all
 * hyperlinks links of an XHTML web page. <br>
 * Usage: java StAXTest url
 *
 * @author Cay Horstmann
 * @version 1.0 2007-06-23
 */
public class STAXTesting {
    public static void main(String[] args) throws Exception {
        InputStream in = new FileInputStream("d:/book/file.xml");
        XMLInputFactory factory = XMLInputFactory.newInstance();
        XMLStreamReader parser = factory.createXMLStreamReader(in);

        boolean dosStart = false;
        String doc = "

       

       //StAX提供了这个迭代器,通过wrap这个迭代器,我们可以方便的控制什么时候读取XML的下一行。

        while (parser.hasNext()) {
            int event = parser.next();

            if (event == XMLStreamConstants.START_ELEMENT) {
                if (parser.getLocalName().equals("staff")) {
                    dosStart = true;
                    doc = "";
                    continue;
                }
            }else if (event == XMLStreamConstants.END_ELEMENT) {
                    if (parser.getLocalName().equals("staff")) {
                        dosStart = false;
                        System.out.println(doc);
                        continue;
                    }
            }

            if (dosStart == true && event == XMLStreamConstants.START_ELEMENT) {
                        doc += parser.getLocalName() + ":"
                                + parser.getElementText() + ";";
                        continue;
            }
    }
}
}

原创粉丝点击