Java中使用DOM来解析xml文档

本文介绍了一种使用 Java 的 DOM 方法解析 XML 文档的方法。示例代码展示了如何读取 XML 文件并获取特定节点的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在JAVA中使用DOM来解析XML文档。
import javax.xml.parsers.*; 
 import org.w3c.dom.*; 
 import java.io.*; 
   
 public class Domcustomer {
    public static void main(String[] args) {
        try {
            // 创建解析工厂
            DocumentBuilderFactory dbfactory = DocumentBuilderFactory .newInstance();
            // 指定DocumentBuilder
            DocumentBuilder builder = dbfactory.newDocumentBuilder();
            // 从文件构造一个Document,"sample.xml"为要解析的xml文件名
            Document doc = builder.parse(new File("sample.xml"));
            // 得到Document的根
            Element root = doc.getDocumentElement();
            System.out.println("The root tag name is :" + root.getTagName());
            System.out.println("*****get tag value*****");
            // 根据指定的Tag名得到element对象的list.
            NodeList list = root.getElementsByTagName("row");
            System.out.println(list.getLength());

            // 查询list中所有的项
            for (int i = 0; i < list.getLength(); i++) {
                // 得到list的所有element对象
                Element element = (Element) list.item(i);
                // 获得此element中的tag名为id的list,此list中的对象仍是element类型
                NodeList titleid = element.getElementsByTagName("id");
                // 获得id元素,id应该是最后一层的element,其结构如:<id>55</id>
                Element idElement = (Element) titleid.item(0);
                // 获得id元素的第一个值
                String id = idElement.getFirstChild().getNodeValue();
                System.out.println("ID :" + "   " + id);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
对应的xml文档如:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <axl:executeSQLQueryResponse xmlns:axl="http://www.cisco.com/AXL/1.0" xmlns:xsi="http://www.cisco.com/AXL/1.0" sequence="1209876883406">
            <return>
                <row>
                    <pkid>281c3155-9a32-4fb5-bcf8-4d8aa03b72a3</pkid>
                    <name>MTP_2</name>
                    <description>MTP_gzyccm504</description>
                    <tkmodel>110</tkmodel>
                    <tkdeviceprotocol>6</tkdeviceprotocol>
                   </row>
                   <row>
                      .......
                    </row>
            </return>
        </axl:executeSQLQueryResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
即可以由Document的根(SOAP-ENV:Envelope)直接通过element的方法getElementsByTagName()直接得到想要的数据对应的list,如得到row对应的NodeList。
此种解析可以用在通过web service得到的SOAP标准的xml文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值