博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习之Xml系列一:初始步骤、查询元素及属性、遍历元素
阅读量:5992 次
发布时间:2019-06-20

本文共 3159 字,大约阅读时间需要 10 分钟。

hot3.png

话不多说,全在代码和注释说明里了。

DTD文件:SwordTypeDefinition.dtd

XML文件:SwordLib.xml

欢欣之刃
1000
10

java代码:

package JavaLeaner.XmlTest;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.junit.Test;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class XmlDemo1 {    /*     * xml的helloworld     * 初始三大步骤:     * 1.建文档构造工厂     * 2.建文档构造器     * 3.建文档对象     */    @Test    public void Test1() throws ParserConfigurationException, SAXException, IOException    {        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        DocumentBuilder docDuilder = factory.newDocumentBuilder();        Document doc = docDuilder.parse("src/JavaLeaner/XmlTest/SwordLib.xml");        //注意:在eclipse中写dtd和xml,如果dtd本身不正确会导致xml编辑器无法提示出所引用dtd的元素和属性。        //注意:只要xml和dtd文件格式正确,以上建立Document的操作无编译错误,并且运行也正常。        //这说明建立Docment的操作与否仅仅与xml和dtd文件格式是否正确有关,而与xml是否符合dtd无关。(实验了子元素顺序跌倒,确实requried属性等接等够正常运行)        //但是,xml不符合dtd,eclipse IDE会进行提示。    }        /*     * xml查询特定元素     *      */    @Test    public void Test2() throws ParserConfigurationException, SAXException, IOException    {        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        DocumentBuilder docDuilder = factory.newDocumentBuilder();        Document doc = docDuilder.parse("src/JavaLeaner/XmlTest/SwordLib.xml");        NodeList list = doc.getElementsByTagName("Sword");        Node node = list.item(0);        Element swordTag=(Element)node;        String snoText=swordTag.getAttribute("sno");        String tagText=swordTag.getTextContent();        System.out.println("sno:"+snoText);        System.out.println("tagText:"+tagText);            //即使运行到这里,如果xml的sword元素没有sno属性,依然可以正常运行,只不过结果为空串        //此时运行结果:        //sno:        //tagText:欢欣之刃100010        //        //xml正确时的结果:        //sno:s1        //tagText:欢欣之刃100010        //注意:元素内有子元素,其getTextContent()得到的是取出xml格式后的纯内容                    }            /*     * xml遍历某一元素下的所有子元素和属性     */    @Test    public void Test3() throws ParserConfigurationException, SAXException, IOException    {        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        DocumentBuilder docDuilder = factory.newDocumentBuilder();        Document doc = docDuilder.parse("src/JavaLeaner/XmlTest/SwordLib.xml");        //注意:在eclipse中写dtd和xml,如果dtd本身不正确会导致xml编辑器无法提示出所引用dtd的元素和属性。        //注意:只要xml和dtd文件格式正确,以上建立Document的操作无编译错误,并且运行也正常。        //这说明建立Docment的操作与否仅仅与xml和dtd文件格式是否正确有关,而与xml是否符合dtd无关。(实验了子元素顺序跌倒,确实requried属性等接等够正常运行)        //但是,xml不符合dtd,eclipse IDE会进行提示。                NodeList list = doc.getElementsByTagName("Sword");        //注意:NodeList是个接口,并且它没有实现Iterable接口,所以不能使用增强for循环来遍历        //Can only iterate over an array or an instance of java.lang.Iterable        //错误用法:for(Node node:list){}        for(int i=0;i

转载于:https://my.oschina.net/happyBKs/blog/293918

你可能感兴趣的文章
uvm_scoreboard——得分
查看>>
JavaFx之不通过全局静态变量进行窗体通信
查看>>
数组(Array)
查看>>
Android MVC开发框架详解
查看>>
Android 发送本地广播 以及创建广播接收器
查看>>
[poj2393] Yogurt factory
查看>>
linux下的循环命令写法
查看>>
swift中的uitable
查看>>
时间戳的转化
查看>>
spring boot 基础篇 -- 集成接口测试Swagger
查看>>
java web学习总结(十三) -------------------使用Session防止表单重复提交
查看>>
mysql 复制表结构和表数据的区别 like 和 select
查看>>
软件工程第二次作业
查看>>
小程序购物数量增减效果
查看>>
LCA学习笔记
查看>>
eclipse 导入 Maven 多模块项目
查看>>
20051114: 未麻的小屋
查看>>
MySQL5.7配置基于GTID的复制
查看>>
iOS获取应用名、版本号、build号、Bundle Id
查看>>
第十六周总结
查看>>