• XML编程


    XML基础(Extensive Markup Language)

    XML是什么:

    • 可扩展的标记语言

    XML能干什么:

    • 描述数据、存储数据、传输(交换)数据。

      XML文档节点类型

    • 文档(document)
    • 元素(element)
    • 属性(attribute)
    • 文本(PCDATA--parsed character data)
    • 注释(comment)
    • DOCTYPE :主要验证文档内容的正确性
    • 实体(ENTITIES)
    • CDATA(character data)

      XML语法

    1. 声明:<?xmlversion="1.0" encoding="UTF-8"?>
    2. 根节点:必须有一个根节点
    3. 标签:标签必须有结束且区分大小写,标签必须顺序嵌套
    4. 属性:必须引号引起值
    5. 空格会被保留,HTML空格最多保留一个
    6. 命名规则:命名必须见名知意 a)名字可包含字母、数字以及其他的字符  b)名字不能以数字或者标点符号开始 c)名字不能以字符“xml”(或者XML、Xml)开始
    7. 名字不能包含空格
    8. 不应在 XML 元素名称中使用 ":" ,这是由于它用于命名空间(namespaces)的保留字。
    9. 标签优先于属性。
    10. XML 命名空间可提供避免元素命名冲突的方法。
    11. CDATA:字符数据,<![CDATA[字符数据]]> ,字符数据不进行转义
    12. 实体:&实体;

    以下对比较常用的几种方法进行实例演示:

    • Document:代表文档对象 Element:节点对象
    • Attribute:属性
    • Text:文本
    • SAXReader:读取器
    • getRootElement():通过document对象获取该文档的根节点
    • Element addElement(“名称”):添加特定节点 返回值是要被添加的节点
    • addAttribute(“属性名”,“属性值”):为指定节点添加属性 elementIterator:子元素迭代器,返回Iterator对象
    • attributeValue(“属性名”)根据属性名获取属性值 addText:添加文本 remove():移除指定元素 属性…
    • getText:获取文本
    package demo;
    
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Iterator;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    /**
     * Document:代表文档对象 Element:节点对象 Attribute:属性 Text:文本 SAXReader:读取器
     * ------------------------------------- getRootElement():通过document对象获取该文档的根节点
     * Element addElement("名称"):添加特定节点 返回值是要被添加的节点
     * addAttribute("属性名","属性值"):为指定节点添加属性 elementIterator:子元素迭代器,返回Iterator对象
     * attributeValue("属性名")根据属性名获取属性值 addText:添加文本 remove():移除指定元素 属性....
     * getText:获取文本
     * 
     * **dom4j:在操作其中的一个节点的同时,必须通过上一级节点进行操作.一定要获取根节点
     * 
     * @author cmy
     * 
     */
    public class XMLDemo {
        Document document; // 文档
    
        public static void main(String[] args) throws Exception {
            XMLDemo demo = new XMLDemo();
            demo.getDocument();
            // demo.addElement();
            // demo.delectElement();
            //demo.modityElement();
            demo.getPhoneById("001");
            demo.saveXML();
        }
    
        // 1:获取文档对象
        public void getDocument() throws Exception {
            // 创建SAX读取器
            SAXReader reader = new SAXReader();
            document = reader
                    .read(this.getClass().getResourceAsStream("phone.xml"));
        }
    
        // 2:增加元素操作
        public void addElement() {
            // dom4j的特点:通过根节点操作其他的节点 首先获取根节点
            Element root = document.getRootElement();
            // 增加手机节点
            Element phone = root.addElement("phone");
            // 为手机节点增加属性
            phone.addAttribute("id", "004");
            // 依次增加子节点
            Element brand = phone.addElement("brand");
            Element type = phone.addElement("type");
            Element price = phone.addElement("price");
            Element description = phone.addElement("description");
    
            // 为子节点添加文本值
            brand.addText("vivo");
            type.addText("x23");
            price.addText("3000");
            description.addText("还好的手机");
        }
    
        // 删除元素操作
        public void delectElement() {
            Element root = document.getRootElement();
    
            Iterator<Element> interator = root.elementIterator();
            while (interator.hasNext()) {
                Element ele = interator.next();
                if (ele.attributeValue("id").equals("004")) {
                    root.remove(ele);
                    break;
                }
            }
        }
    
        // 修改元素操作
        public void modityElement() {
            Element root = document.getRootElement();
    
            Iterator<Element> iter = root.elementIterator();
            while (iter.hasNext()) {
                Element ele = iter.next();
                if (ele.attributeValue("id").equals("003")) {
                    Iterator<Element> inter = ele.elementIterator();
                    while (inter.hasNext()) {
                        Element ele2 = inter.next();
                        if (ele2.getName().equals("price")) {
                            ele2.setText("5000");
                        }
                    }
                }
            }
        }
    
        // 查询元素操作 根据Id查询手机信息
        public void getPhoneById(String id){
            Element root = document.getRootElement();
            
            Iterator<Element> iterator=root.elementIterator();
            while(iterator.hasNext()){
                Element ele = iterator.next();
                if(ele.attributeValue("id").equals(id)){ //获取phone节点
                    Iterator<Element> iter=ele.elementIterator(); //phone节点下的子节点
                    while(iter.hasNext()){
                        System.out.println(iter.next().getText());
                    }
                    break;
                }
            }
        }
        // 保存操作
        public void saveXML() throws Exception {
            FileWriter fw = new FileWriter(
                    "D:\Workspaces\XMLTest\src\demo\phone.xml");
    
            OutputFormat format = OutputFormat.createPrettyPrint();
            // 设置字符集
            format.setEncoding("GBK");
    
            XMLWriter writer = new XMLWriter(fw, format);
    
            writer.write(document);
    
            writer.flush();
    
            writer.close();
    
            fw.close();
        }
    
    }
  • 相关阅读:
    Microsoft Dynamics CRM4.0 Data Auditing and Restore (数据审核和恢复)
    Microsoft Dynamics CRM4.0 在联系人contact列表上直接发送邮件
    安装Microsoft Dynamics CRM 2011时出现“Microsoft.Crm.Setup.Common.Analyzer+CollectAction 操作失败”的解决办法
    Microsoft Dynamics CRM4.0 控制是否显示 '设置Setting’ 区域
    Microsoft CRM "您查看的网页正在试图关闭窗口" 不能自动关闭的解决办法
    Dynamics CRM 2011 Ribbon 默认收起collapse和隐藏hide
    Microsoft Dynamics CRM4.0 在线用户检测(Online user detect)
    C语言I博客作业03
    C语言I博客作业06
    第一次作业
  • 原文地址:https://www.cnblogs.com/big-data-sky/p/11069278.html
Copyright © 2020-2023  润新知