java解析xml之dom解析xml示例分享


在Java中,使用DOM(Document Object Model)解析XML是一种常见的做法,它允许你通过编程方式操作XML文档的结构、内容和样式。下面是一个简单的DOM解析XML的示例。

首先,确保你的项目中包含了处理XML的库,对于Java SE,这通常是内置的,但如果你在使用其他环境(如Android),可能需要显式地添加相关依赖。

接下来是一个简单的示例,它展示了如何加载一个XML文件,并读取其中的一些数据。

假设我们有如下的XML文件(`example.xml`):


<books>
    <book>
        <title>Java编程思想</title>
        <author>Bruce Eckel</author>
    </book>
    <book>
        <title>Effective Java</title>
        <author>Joshua Bloch</author>
    </book>
</books>

Java代码示例:


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class DOMParserExample {

    public static void main(String[] args) {
        try {
            // 创建一个DocumentBuilderFactory对象
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            // 通过DocumentBuilderFactory获取DocumentBuilder对象
            DocumentBuilder builder = factory.newDocumentBuilder();
            // 加载并解析XML文件,返回一个Document对象
            Document document = builder.parse("example.xml");
            // 获取根元素
            Element root = document.getDocumentElement();
            // 获取根元素下的所有book元素
            NodeList books = root.getElementsByTagName("book");

            // 遍历所有book元素
            for (int i = 0; i < books.getLength(); i++) {
                Node bookNode = books.item(i);
                if (bookNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element bookElement = (Element) bookNode;

                    // 获取并打印title和author元素的内容
                    String title = bookElement.getElementsByTagName("title").item(0).getTextContent();
                    String author = bookElement.getElementsByTagName("author").item(0).getTextContent();

                    System.out.println("Book Title: " + title);
                    System.out.println("Author: " + author);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们首先通过`DocumentBuilderFactory`和`DocumentBuilder`类创建了一个`Document`对象,该对象代表了我们加载的XML文件。然后,我们通过`getDocumentElement()`方法获取了XML文档的根元素,并遍历了所有的``元素。对于每个``元素,我们又获取了其下的``和`<author>`元素,并打印了它们的内容。</p><p>请确保`example.xml`文件位于你的程序可以访问的路径下,否则`builder.parse("example.xml")`将会抛出异常。</p> </div> </div> </div> </div> <div class="row"> <div class="card card-body"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8670312724662002" crossorigin="anonymous"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-8670312724662002" data-ad-slot="5669508194"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> </div> <hr> <footer class="card" style="position:relative;bottom:0;width:100%;"> <div style="background-color: #e9ecef;padding-top: 20px;"> <div class="container"> <div class="copyright">Copyright © 2024 www.d2tu.com <a rel="nofollow" href="https://beian.miit.gov.cn/" target="_blank">皖ICP备2023005503号-1</a> <a href="https://www.d2tu.com/sitemap.xml" target="_blank">XML地图</a> </div> <p>QQ邮箱: <b>664032890</b></p> </div> </div> </footer> <script src="/static/js/jquery.min.js"></script> <script src="/static/js/bootstrap.min.js"></script> <script src="/ziyuan/js/prism.js"></script> </body> </html>