五十一、简单使用Dom读取xml文档

<?xml version="1.0" encoding="UTF-8"?>
<W>
    <SS Q="0">
        <Y Q="en">0</Y>
        <Y>0</Y>
        <Y>0</Y>
        <Y>0</Y>
    </SS>
   <SS Q="0">
        <Y Q="en">0</Y>
        <Y>0</Y>
        <Y>0</Y>
        <Y>0</Y>
    </SS>
    <SS Q="0">
        <Y Q="en">0</Y>
        <Y>0</Y>
        <Y>0</Y>
        <Y>0</Y>
    </SS>
</W>

package xml;


	

	import org.w3c.dom.*;

	import javax.xml.parsers.DocumentBuilder;
	import javax.xml.parsers.DocumentBuilderFactory;

	/**
	 * 读取xml文件数据
	 */
	public class Read1 {

	    public static void main(String[] args) {

	        try {
	            /**
	             * 准备工作
	             */
	            // 创建一个DocumentBuilderFactory(DOM解析器工厂)的对象
	            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
	            // 创建一个DocumentBuilder(DOM解析器)的对象
	            DocumentBuilder db = dbFactory.newDocumentBuilder();
	            // 把要解析的xml文件读入DOM解析器
	            Document document = db.parse("D://012.xml");

	            // 获取所有book节点的集合
	            NodeList bookList = document.getElementsByTagName("SS");
	            // 获取bookList的长度,遍历每一个book节点
	            for (int i = 0; i < bookList.getLength(); i++) {
	                System.out.println("遍历第" + (i + 1) + "个SS节点:");

	                /**
	                 * 使用DOM解析xml文件的属性名和属性值
	                 */
	                // 未知节点属性的个数和属性名时
	                // 获取一个book节点,bookList的索引值从0开始
	                Node SS = bookList.item(i);
	                // 获取book节点的所有属性的集合
	                NamedNodeMap attrs = SS.getAttributes();
	                // 获取attrs的长度,遍历每一个book节点的属性
	                for (int j = 0; j < attrs.getLength(); j++) {
	                    // 获取book节点的某一个属性
	                    Node attr = attrs.item(j);
	                    // 获取属性名和属性值
	                    System.out.println("属性名:" + attr.getNodeName() + "--属性值:" + attr.getNodeValue());
	                }

	                // 已知节点属性的个数和属性名时
	                // 将book节点进行强制类型转换,转换成Element类型
	                // Element book = (Element)bookList.item(i);
	                // 获取category的属性值
	                // String attrValue = book.getAttribute("category");
	                // System.out.println("category的属性值为:" + attrValue);

	                /**
	                 * 使用DOM解析xml文件的节点名和节点值
	                 */
	                // 解析book节点的子节点
	                NodeList childNodes = SS.getChildNodes();
	                // 获取childNodes的长度,遍历每一个子节点
	                for (int k = 0; k < childNodes.getLength(); k++) {
	                    // 可以区分Element类型的Node(ELEMENT_NODE)和Text类型的Node(TEXT_NODE)
	                    if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) {
	                        // 获取Element类型节点的节点名和节点值
	                        System.out.println("节点名:" + childNodes.item(k).getNodeName() + "--节点值是:" + childNodes.item(k).getTextContent());
	                        // 不能通过getNodeValue()直接获取节点值,标签之间的文本被看作是标签的子节点
	                        // System.out.println("--节点值:" + childNodes.item(k).getFirstChild().getNodeValue());
	                    }
	                }
	            }
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	    }
	}




遍历第1个SS节点:
属性名:Q–属性值:0
节点名:Y–节点值是:0
节点名:Y–节点值是:0
节点名:Y–节点值是:0
节点名:Y–节点值是:0
遍历第2个SS节点:
属性名:Q–属性值:0
节点名:Y–节点值是:0
节点名:Y–节点值是:0
节点名:Y–节点值是:0
节点名:Y–节点值是:0
遍历第3个SS节点:
属性名:Q–属性值:0
节点名:Y–节点值是:0
节点名:Y–节点值是:0
节点名:Y–节点值是:0
节点名:Y–节点值是:0

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用DOM文档对象模型)读取XML数据需要以下步骤: 1. 创建DocumentBuilderFactory实例 ``` DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); ``` 2. 创建DocumentBuilder实例 ``` DocumentBuilder builder = factory.newDocumentBuilder(); ``` 3. 解析XML文件并返回Document对象 ``` Document document = builder.parse(new File("example.xml")); ``` 4. 获取根节点 ``` Element rootElement = document.getDocumentElement(); ``` 5. 遍历子节点获取需要的信息 ``` NodeList nodeList = rootElement.getElementsByTagName("book"); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) node; String title = element.getElementsByTagName("title").item(0).getTextContent(); String author = element.getElementsByTagName("author").item(0).getTextContent(); String price = element.getElementsByTagName("price").item(0).getTextContent(); System.out.println("Title: " + title); System.out.println("Author: " + author); System.out.println("Price: " + price); } } ``` 完整代码示例: ```java import java.io.File; 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 XMLReader { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File("example.xml")); Element rootElement = document.getDocumentElement(); NodeList nodeList = rootElement.getElementsByTagName("book"); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) node; String title = element.getElementsByTagName("title").item(0).getTextContent(); String author = element.getElementsByTagName("author").item(0).getTextContent(); String price = element.getElementsByTagName("price").item(0).getTextContent(); System.out.println("Title: " + title); System.out.println("Author: " + author); System.out.println("Price: " + price); } } } catch (Exception e) { e.printStackTrace(); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值