zoukankan      html  css  js  c++  java
  • XML的dom

    public class DomTest {
        public static void main(String[] args) {
            testXml();
        }
    
        public static void testXml() {
            try {
                // 得到DOM解析器的工厂实例
                DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                        .newInstance();
                // 从DOM工厂中获得DOM解析器
                DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();
                // 把要解析的xml文档读入DOM解析器
                Document doc = dbBuilder.parse("src/before.xml");
    //            System.out.println("处理该文档的DomImplementation对象  = "
    //                    + doc.getImplementation());
                // 得到文档名称为Student的元素的节点列表
    //            NodeList nList = doc.getElementsByTagName("object");
    //            Element node = (Element) nList.item(0);
    //            NodeList nodeList = node.getElementsByTagName("aspect");
                NodeList nodeList = ((Element)doc.getElementsByTagName("object").item(0)).getElementsByTagName("aspect");
                for (int j = 0; j < nodeList.getLength(); j++) {
                    Element n1 = (Element) nodeList.item(j);
                    System.out.println(n1.getAttribute("name"));
                    System.out.println(n1.getFirstChild().getNodeValue());
                } 
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    
        public static void queryXml() {
            try {
                // 得到DOM解析器的工厂实例
                DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                        .newInstance();
                // 从DOM工厂中获得DOM解析器
                DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();
                // 把要解析的xml文档读入DOM解析器
                Document doc = dbBuilder.parse("src/school.xml");
                System.out.println("处理该文档的DomImplementation对象  = "
                        + doc.getImplementation());
                // 得到文档名称为Student的元素的节点列表
                NodeList nList = doc.getElementsByTagName("Student");
                // 遍历该集合,显示结合中的元素及其子元素的名字
                for (int i = 0; i < nList.getLength(); i++) {
                    Element node = (Element) nList.item(i);
                    System.out.println("Name: "
                            + node.getElementsByTagName("Name").item(0)
                                    .getFirstChild().getNodeValue());
                    System.out.println("Num: "
                            + node.getElementsByTagName("Num").item(0)
                                    .getFirstChild().getNodeValue());
                    System.out.println("Classes: "
                            + node.getElementsByTagName("Classes").item(0)
                                    .getFirstChild().getNodeValue());
                    System.out.println("Address: "
                            + node.getElementsByTagName("Address").item(0)
                                    .getFirstChild().getNodeValue());
                    System.out.println("Tel: "
                            + node.getElementsByTagName("Tel").item(0)
                                    .getFirstChild().getNodeValue());
                }
    
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    
        public static void testSample() {
            // TODO Auto-generated method stub
            // 创建一个DocumentBuilderFactory的对象
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            // 创建一个DocumentBuilder的对象
            try {
                // 创建DocumentBuilder对象
                DocumentBuilder db = dbf.newDocumentBuilder();
                // 通过DocumentBuilder对象的parser方法加载books.xml文件到当前项目下
                Document document = db.parse("src/Students.xml");
                // 获取所有Student节点的集合
                NodeList StudentList = document.getElementsByTagName("Student");
                // 通过nodelist的getLength()方法可以获取StudentList的长度
                System.out.println("DOM解析开始...");
                // 遍历每一个Student节点
                for (int i = 0; i < StudentList.getLength(); i++) {
                    System.out.println("开始解析第" + (i + 1) + "个学生");
                    // 通过 item(i)方法 获取一个Student节点,nodelist的索引值从0开始
                    Node book = StudentList.item(i);
                    // 获取Student节点的所有属性集合
                    NamedNodeMap attrs = book.getAttributes();
                    // 遍历Student的属性
                    for (int j = 0; j < attrs.getLength(); j++) {
                        // 通过item(index)方法获取Student节点的某一个属性
                        Node attr = attrs.item(j);
    
                        // 输出学生的属性名和属性值
                        System.out.println(attr.getNodeName() + ":"
                                + attr.getNodeValue());
                    }
                    NodeList childNodes = book.getChildNodes();
                    // 遍历childNodes获取每个节点的节点名和节点值
                    for (int k = 0; k < childNodes.getLength(); k++) {
                        // 区分出text类型的node以及element类型的node
                        if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) {
    
                            // 输出子节点的属性名和属性值
                            System.out.println(childNodes.item(k).getNodeName()
                                    + ":"
                                    + childNodes.item(k).getFirstChild()
                                            .getNodeValue());
    
                        }
    
                    }
    
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("DOM解析结束...");
        }
    }
    <?xml version = "1.0" encoding = "utf-8"?>
    <School>
        <Student>
            <Name>沈浪</Name>
            <Num>1006010022</Num>
            <Classes>信管2</Classes>
            <Address>浙江杭州3</Address>
            <Tel>123456</Tel>
        </Student>
        <Student>
            <Name>沈1</Name>
            <Num>1006010033</Num>
            <Classes>信管1</Classes>
            <Address>浙江杭州4</Address>
            <Tel>234567</Tel>
        </Student>
        <Student>
            <Name>沈2</Name>
            <Num>1006010044</Num>
            <Classes>生工2</Classes>
            <Address>浙江杭州1</Address>
            <Tel>345678</Tel>
        </Student>
        <Student>
            <Name>沈3</Name>
            <Num>1006010055</Num>
            <Classes>电子2</Classes>
            <Address>浙江杭州2</Address>
            <Tel>456789</Tel>
        </Student>
    </School>
  • 相关阅读:
    在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味
    打包场景出错
    探讨 .NET 4 新增的 SortedSet 类
    error CS1010 CS8025 CS1012 CS1525 常见文档错误解决
    安卓机在按HOME键时,UNITY触发的APPLICATION_PAUSE事件
    有几个Pass,对象就会绘制几次
    华东师范大学2017年高等代数考研试题
    华东师范大学2017年数学分析考研试题
    无穷级数的收敛性
    南开大学2017年数学分析高等代数考研试题
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/13178083.html
Copyright © 2011-2022 走看看