加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java读取XML文件

发布时间:2020-12-14 06:32:47 所属栏目:Java 来源:网络整理
导读:h2 class="l"《a href="http://www.imooc.com/learn/171" target="_blank"Java眼中的XML---文件读

<h2 class="l">《<a href="http://www.imooc.com/learn/171" target="_blank">Java眼中的XML---文件读取》

1.XML

XML 指可扩展标记语言(EXtensible?Markup?Language),XML 被设计用来传输和存储数据。

XML 仅仅是纯文本,XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML。

通过 XML 可以发明自己的标签,XML 没有预定义的标签。

XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。这让创建不同应用程序可以共享的数据变得更加容易。XML 简化数据传输,通过 XML,可以在不兼容的系统之间轻松地交换数据。

XML文件格式:

...

XML对大小写敏感。所有元素必须关闭标签。标签必须正确嵌套。

XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。

在 XML 中,有 5 个预定义的实体引用:<(&lt;) >(&gt;) &(&amp;) '(&apos;) "(&quot;)

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。

XML 元素可以在开始标签中包含属性,类似 HTML。属性 (Attribute) 提供关于元素的额外(附加)信息。XML 属性必须加引号。

属性与元素:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。

2.JAVA读取XML文件

Java读取XML文件,有四种方式:

1.DOM方式解析XML文件

DOM (Document Object Model,文档对象模型)定义了访问和操作文档的标准方法。

XML DOM (XML Document Object Model) 定义了访问和操作 XML 文档的标准方法。

DOM 把 XML 文档作为树结构来查看。能够通过 DOM 树来访问所有元素。可以修改或删除它们的内容,并创建新的元素。元素,它们的文本,以及它们的属性,都被认为是节点。

Everyday Italian Giada De Laurentiis 2005 30.00 Harry Potter J K. Rowling 2005 29.99
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.parsers.DocumentBuilder;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.parsers.DocumentBuilderFactory;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.parsers.ParserConfigurationException;

<span style="color: #0000ff;">import<span style="color: #000000;"> org.w3c.dom.Document;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.w3c.dom.Element;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.w3c.dom.NamedNodeMap;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.w3c.dom.Node;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.w3c.dom.NodeList;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.xml.sax.SAXException;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> DomTest {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
DocumentBuilderFactory dbf =<span style="color: #000000;"> DocumentBuilderFactory.newInstance();
<span style="color: #0000ff;">try<span style="color: #000000;"> {
DocumentBuilder db =<span style="color: #000000;"> dbf.newDocumentBuilder();
Document doc = db.parse("books.xml"<span style="color: #000000;">);

        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 通过Tag获取节点,获得所有book节点的集合</span>
        NodeList bookList = doc.getElementsByTagName("book"<span style="color: #000000;"&gt;);
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 2个节点  代表2本书</span>
        System.out.println("一共有" + bookList.getLength() + "本书。"<span style="color: #000000;"&gt;);

        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 获取文档根节点</span>
        Element root =<span style="color: #000000;"&gt; doc.getDocumentElement();
        NodeList bookList1 </span>=<span style="color: #000000;"&gt; root.getChildNodes();
        System.out.println(</span>"有" + bookList1.getLength() + "个节点"<span style="color: #000000;"&gt;);
        </span><span style="color: #008000;"&gt;/*</span><span style="color: #008000;"&gt;  5个节点   因为text也是节点
            <bookstore>
            1.(text)
            2.(<book>...</book>)
            3.(text)
            4.(<book>...</book>)
            5.(text)
            </bookstore>
        </span><span style="color: #008000;"&gt;*/</span>
        <span style="color: #0000ff;"&gt;int</span> index = 0<span style="color: #000000;"&gt;;
        </span><span style="color: #0000ff;"&gt;for</span> (<span style="color: #0000ff;"&gt;int</span> i = 0; i < bookList1.getLength(); i++<span style="color: #000000;"&gt;) {
            </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 通过item(i)方法获取第i个节点</span>
            Node node =<span style="color: #000000;"&gt; bookList1.item(i);

            </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 获取所有名字为book的节点</span>
            <span style="color: #0000ff;"&gt;if</span> ("book"<span style="color: #000000;"&gt;.equals(node.getNodeName())) {
                System.out.println(</span>"———第" + (++index) + "本书的信息————"<span style="color: #000000;"&gt;);

                </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 通过getAttributes()获取节点的所有属性</span>
                NamedNodeMap attrs =<span style="color: #000000;"&gt; node.getAttributes();
                System.out.print(</span>"所有属性:"<span style="color: #000000;"&gt;);
                </span><span style="color: #0000ff;"&gt;for</span> (<span style="color: #0000ff;"&gt;int</span> j = 0; j < attrs.getLength(); j++<span style="color: #000000;"&gt;) {
                    Node attr </span>=<span style="color: #000000;"&gt; attrs.item(j);
                    </span><span style="color: #0000ff;"&gt;if</span> (j != 0) System.out.print(","<span style="color: #000000;"&gt;);
                    System.out.print(attr.getNodeName() </span>+ "(" + attr.getNodeValue() + ")"<span style="color: #000000;"&gt;);
                }
                System.out.println();

                </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 也可以直接通过属性名获取属性值
                </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 将node强制转换为Element</span>
                Element book =<span style="color: #000000;"&gt; (Element)node;
                System.out.println(</span>"属性之种类: " + book.getAttribute("category"<span style="color: #000000;"&gt;));

                </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 继续获取book节点的子节点</span>
                NodeList childNodes =<span style="color: #000000;"&gt; node.getChildNodes();
                </span><span style="color: #0000ff;"&gt;for</span> (<span style="color: #0000ff;"&gt;int</span> k = 0; k < childNodes.getLength(); k++<span style="color: #000000;"&gt;) {
                    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 只获取element类型的node,不要text</span>
                    Node childNode =<span style="color: #000000;"&gt; childNodes.item(k); 
                    </span><span style="color: #0000ff;"&gt;if</span> (childNode.getNodeType() ==<span style="color: #000000;"&gt; Node.ELEMENT_NODE) {
                        System.out.print(childNode.getNodeName() </span>+ ":"<span style="color: #000000;"&gt;);
                        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 只有<node>text</node>的时候才能获取node的值  否则是null</span>

<span style="color: #000000;"> System.out.print(childNode.getFirstChild().getNodeValue());
<span style="color: #008000;">//<span style="color: #008000;"> 获取节点之间所有的文本内容
System.out.println("(" + childNode.getTextContent() + ")"<span style="color: #000000;">);
}
}
}
}

    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (ParserConfigurationException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (SAXException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (IOException e) {
        e.printStackTrace();
    }
}

}

2.SAX方式解析XML文件

SAX,全称Simple API for XML,既是一种接口,也是一种软件包。它是一种XML解析的替代方法。SAX不同于DOM解析,它逐行扫描文档,一边扫描一边解析。由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,这对于大型文档的解析是个巨大优势。

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> Book {
<span style="color: #0000ff;">private<span style="color: #000000;"> String id;
<span style="color: #0000ff;">private<span style="color: #000000;"> String category;
<span style="color: #0000ff;">private<span style="color: #000000;"> String title;
<span style="color: #0000ff;">private<span style="color: #000000;"> String author;
<span style="color: #0000ff;">private<span style="color: #000000;"> String year;
<span style="color: #0000ff;">private<span style="color: #000000;"> String price;

</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; String toString() {
    </span><span style="color: #0000ff;"&gt;return</span> "id=" + id + "ncategory=" + category + "ntitle=" +<span style="color: #000000;"&gt; title 
            </span>+ "nauthor=" + author + "nyear=" + year + "nprice=" +<span style="color: #000000;"&gt; price;
}

</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; String getId() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; id;
}
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; setId(String id) {
    </span><span style="color: #0000ff;"&gt;this</span>.id =<span style="color: #000000;"&gt; id;
}
</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; String getCategory() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; category;
}
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; setCategory(String category) {
    </span><span style="color: #0000ff;"&gt;this</span>.category =<span style="color: #000000;"&gt; category;
}
</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; String getTitle() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; title;
}
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; setTitle(String title) {
    </span><span style="color: #0000ff;"&gt;this</span>.title =<span style="color: #000000;"&gt; title;
}
</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; String getAuthor() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; author;
}
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; setAuthor(String author) {
    </span><span style="color: #0000ff;"&gt;this</span>.author =<span style="color: #000000;"&gt; author;
}
</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; String getYear() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; year;
}
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; setYear(String year) {
    </span><span style="color: #0000ff;"&gt;this</span>.year =<span style="color: #000000;"&gt; year;
}
</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; String getPrice() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; price;
}
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; setPrice(String price) {
    </span><span style="color: #0000ff;"&gt;this</span>.price =<span style="color: #000000;"&gt; price;
}

}

<span style="color: #0000ff;">import<span style="color: #000000;"> java.util.ArrayList;

<span style="color: #0000ff;">import<span style="color: #000000;"> org.xml.sax.Attributes;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.xml.sax.SAXException;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.xml.sax.helpers.DefaultHandler;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class SAXParserHandler <span style="color: #0000ff;">extends<span style="color: #000000;"> DefaultHandler {

Book book </span>= <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;;
ArrayList</span><Book> bookList = <span style="color: #0000ff;"&gt;new</span> ArrayList<><span style="color: #000000;"&gt;();

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 全局变量标识第几本书</span>
<span style="color: #0000ff;"&gt;int</span> bookIndex = 0<span style="color: #000000;"&gt;;

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 全局变量  记录节点的值</span>
String nodeValue = <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;;

</span><span style="color: #0000ff;"&gt;public</span> ArrayList<Book><span style="color: #000000;"&gt; getBookList() {
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; bookList;
}

</span><span style="color: #008000;"&gt;/**</span><span style="color: #008000;"&gt;
 * 用来标识文档开始
 </span><span style="color: #008000;"&gt;*/</span><span style="color: #000000;"&gt;
@Override
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span> startDocument() <span style="color: #0000ff;"&gt;throws</span><span style="color: #000000;"&gt; SAXException {
    </span><span style="color: #0000ff;"&gt;super</span><span style="color: #000000;"&gt;.startDocument();
    System.out.println(</span>"SAX解析开始"<span style="color: #000000;"&gt;);
}
</span><span style="color: #008000;"&gt;/**</span><span style="color: #008000;"&gt;
 * 用来标识文档结束
 </span><span style="color: #008000;"&gt;*/</span><span style="color: #000000;"&gt;
@Override
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span> endDocument() <span style="color: #0000ff;"&gt;throws</span><span style="color: #000000;"&gt; SAXException {
    </span><span style="color: #0000ff;"&gt;super</span><span style="color: #000000;"&gt;.endDocument();
    System.out.println(</span>"SAX解析结束"<span style="color: #000000;"&gt;);
}
</span><span style="color: #008000;"&gt;/**</span><span style="color: #008000;"&gt;
 * 解析XML元素开始
 </span><span style="color: #008000;"&gt;*/</span><span style="color: #000000;"&gt;
@Override
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; startElement(String uri,String localName,String qName,Attributes attributes)
        </span><span style="color: #0000ff;"&gt;throws</span><span style="color: #000000;"&gt; SAXException {
    </span><span style="color: #0000ff;"&gt;super</span><span style="color: #000000;"&gt;.startElement(uri,localName,qName,attributes);
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 如果标签名为book</span>
    <span style="color: #0000ff;"&gt;if</span> ("book"<span style="color: #000000;"&gt;.equals(qName)) {
        System.out.println(</span>"第" + (++bookIndex) + "本书:"<span style="color: #000000;"&gt;);
        book </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Book();
        </span><span style="color: #0000ff;"&gt;for</span> (<span style="color: #0000ff;"&gt;int</span> i = 0; i < attributes.getLength(); i++<span style="color: #000000;"&gt;) {
            System.out.print(</span>"属性:" +<span style="color: #000000;"&gt; attributes.getQName(i));
            System.out.println(</span>"=" +<span style="color: #000000;"&gt; attributes.getValue(i));
            </span><span style="color: #0000ff;"&gt;if</span> ("category"<span style="color: #000000;"&gt;.equals(attributes.getQName(i))) {
                book.setCategory(attributes.getValue(i));
            } </span><span style="color: #0000ff;"&gt;else</span> <span style="color: #0000ff;"&gt;if</span> ("id"<span style="color: #000000;"&gt;.equals(attributes.getQName(i))) {
                book.setId(attributes.getValue(i));
            }
        }
    } </span><span style="color: #0000ff;"&gt;else</span> <span style="color: #0000ff;"&gt;if</span> (!"bookstore"<span style="color: #000000;"&gt;.equals(qName)) {
        System.out.print(</span>"节点名:" +<span style="color: #000000;"&gt; qName);
    }
}
</span><span style="color: #008000;"&gt;/**</span><span style="color: #008000;"&gt;
 * 解析XML元素结束
 </span><span style="color: #008000;"&gt;*/</span><span style="color: #000000;"&gt;
@Override
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span> endElement(String uri,String qName) <span style="color: #0000ff;"&gt;throws</span><span style="color: #000000;"&gt; SAXException {
    </span><span style="color: #0000ff;"&gt;super</span><span style="color: #000000;"&gt;.endElement(uri,qName);
    </span><span style="color: #0000ff;"&gt;if</span> ("book"<span style="color: #000000;"&gt;.equals(qName)) {
        System.out.println(</span>"本书遍历结束"<span style="color: #000000;"&gt;);
        bookList.add(book);
        book </span>= <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;;
    } </span><span style="color: #0000ff;"&gt;else</span> <span style="color: #0000ff;"&gt;if</span> ("title"<span style="color: #000000;"&gt;.equals(qName)) {
        book.setTitle(nodeValue);
    } </span><span style="color: #0000ff;"&gt;else</span> <span style="color: #0000ff;"&gt;if</span> ("author"<span style="color: #000000;"&gt;.equals(qName)) {
        book.setAuthor(nodeValue);
    } </span><span style="color: #0000ff;"&gt;else</span> <span style="color: #0000ff;"&gt;if</span> ("year"<span style="color: #000000;"&gt;.equals(qName)) {
        book.setYear(nodeValue);
    } </span><span style="color: #0000ff;"&gt;else</span> <span style="color: #0000ff;"&gt;if</span> ("price"<span style="color: #000000;"&gt;.equals(qName)) {
        book.setPrice(nodeValue);
    } 
}
@Override
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span> characters(<span style="color: #0000ff;"&gt;char</span>[] ch,<span style="color: #0000ff;"&gt;int</span> start,<span style="color: #0000ff;"&gt;int</span> length) <span style="color: #0000ff;"&gt;throws</span><span style="color: #000000;"&gt; SAXException {
    </span><span style="color: #0000ff;"&gt;super</span><span style="color: #000000;"&gt;.characters(ch,start,length);
    nodeValue </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; String(ch,length);
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 去掉空白文本部分</span>
    <span style="color: #0000ff;"&gt;if</span> (!""<span style="color: #000000;"&gt;.equals(nodeValue.trim()))
        System.out.println(</span>"=" +<span style="color: #000000;"&gt; nodeValue);
}

}

<span style="color: #0000ff;">import<span style="color: #000000;"> java.io.IOException;
<span style="color: #0000ff;">import<span style="color: #000000;"> java.util.ArrayList;

<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.parsers.ParserConfigurationException;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.parsers.SAXParser;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.parsers.SAXParserFactory;

<span style="color: #0000ff;">import<span style="color: #000000;"> org.xml.sax.SAXException;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> SAXTest {

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    SAXParserFactory factory </span>=<span style="color: #000000;"&gt; SAXParserFactory.newInstance();
    </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
        SAXParser parser </span>=<span style="color: #000000;"&gt; factory.newSAXParser();
        SAXParserHandler handler </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; SAXParserHandler();
        parser.parse(</span>"books.xml"<span style="color: #000000;"&gt;,handler);
        ArrayList</span><Book> bookList =<span style="color: #000000;"&gt; handler.getBookList();
        </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt; (Book book: bookList) {
            System.out.println(</span>"-------"<span style="color: #000000;"&gt;);
            System.out.println(book);
        }
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (ParserConfigurationException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (SAXException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (IOException e) {
        e.printStackTrace();
    }
}

}

3.JDOM方式解析XML文件

这个比较简单了,不过需要导入外部jar文件,地址:http://www.jdom.org/dist/binary/

<span style="color: #0000ff;">import<span style="color: #000000;"> org.jdom2.Attribute;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.jdom2.Document;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.jdom2.Element;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.jdom2.JDOMException;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.jdom2.input.SAXBuilder;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> JDOMTest {

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    SAXBuilder saxBuilder </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; SAXBuilder();
    </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
        InputStream in </span>= <span style="color: #0000ff;"&gt;new</span> FileInputStream("xmls/books.xml"<span style="color: #000000;"&gt;);
        Document document </span>=<span style="color: #000000;"&gt; saxBuilder.build(in);
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 获取xml文件根节点</span>
        Element element =<span style="color: #000000;"&gt; document.getRootElement();
        List</span><Element> bookList =<span style="color: #000000;"&gt; element.getChildren();
        </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt; (Element book: bookList) {
            </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 直接根据属性名获取属性值
            </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; book.getAttributeValue("id");</span>
            List<Attribute> attrList =<span style="color: #000000;"&gt; book.getAttributes();
            </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt; (Attribute attr: attrList) {
                System.out.println(</span>"属性" + attr.getName() + "=" +<span style="color: #000000;"&gt; attr.getValue());
            }
            List</span><Element> childList =<span style="color: #000000;"&gt; book.getChildren();
            </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt; (Element child: childList) {
                System.out.println(</span>"子节点" + child.getName() + "=" +<span style="color: #000000;"&gt; child.getValue());
            }
        }
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (FileNotFoundException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (JDOMException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (IOException e) {
        e.printStackTrace();
    }
}

}

4.DOM4J方式解析XML文件

下载地址:http://www.dom4j.org/dom4j-1.6.1/

<span style="color: #0000ff;">import<span style="color: #000000;"> org.dom4j.Attribute;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.dom4j.Document;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.dom4j.DocumentException;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.dom4j.Element;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.dom4j.io.SAXReader;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.w3c.dom.Attr;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> DOM4JTest {

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    SAXReader reader </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; SAXReader();
    Document document;
    </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
        document </span>= reader.read(<span style="color: #0000ff;"&gt;new</span> File("xmls/books.xml"<span style="color: #000000;"&gt;));

        Element bookStore </span>=<span style="color: #000000;"&gt; document.getRootElement();
        Iterator it </span>=<span style="color: #000000;"&gt; bookStore.elementIterator();
        </span><span style="color: #0000ff;"&gt;while</span><span style="color: #000000;"&gt; (it.hasNext()) {
            System.out.println(</span>"开始遍历某本书>>>"<span style="color: #000000;"&gt;);
            Element book </span>=<span style="color: #000000;"&gt; (Element)it.next();
            List</span><Attribute> bookAttrs =<span style="color: #000000;"&gt; book.attributes();
            </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt; (Attribute attr: bookAttrs) {
                System.out.println(</span>"属性" + attr.getName() + "=" +<span style="color: #000000;"&gt; attr.getValue());
            }
            Iterator childIt </span>=<span style="color: #000000;"&gt; book.elementIterator();
            </span><span style="color: #0000ff;"&gt;while</span><span style="color: #000000;"&gt; (childIt.hasNext()) {
                Element bookChild </span>=<span style="color: #000000;"&gt; (Element) childIt.next();
                System.out.println(</span>"节点" + bookChild.getName() + "=" +<span style="color: #000000;"&gt; bookChild.getStringValue());
            }
            System.out.println(</span>"结束遍历>>>"<span style="color: #000000;"&gt;);
        }

    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (DocumentException e) {
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; TODO Auto-generated catch block</span>

<span style="color: #000000;"> e.printStackTrace();
}
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读