XML可扩展性标记语言

本文介绍了XML的基本概念,包括其可扩展性的特点和基础语法。XML的约束如DTD和Schema用于规范标签的使用。此外,XML在配置文件、结构化存储和数据传递中的应用被详细阐述,与HTML的关系以及解析方式如SAX和DOM也进行了说明。XML在实际开发中,如JavaWeb中的应用和读写操作是关键操作。

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

1、XML:可扩展性标记语言

          xml基础语法:<stu></stu>

        (标签名、属性名不受限制,可随便写)==》导致:没办法统计

2、约束:限定XML标签的名称、位置、顺序、个数以及子标签的名称、位置、顺序、个数...

                本身是一门语言,采用的也是xml语法结构。

   分类:种类有几十种,常用:

        DTD:出现较早       粒度比较粗   基本可以满足日常使用

        Schmal:出现的比较晚 粒度比较细   现在几乎所有xml配置都采用

3、xml指令:不会直接产生可视化输出,只是指导xml如何展现==》属于head部分

4、xml与html之间的关系:

        html:继承了xml语法,采用了DTD约束

        浏览器常用种类:IE、Firefox、Google

        选择默认解析语言时,最终选择html作为默认解析语言

        xml语言过于灵活,html是受约束的xml

xml应用场景:

        配置文件:javaweb中最为常见

        结构化存储文件:数据库中、存放flash文件

        数据传递的标准格式:广泛应用在各种语言  

json格式:xml瘦体 {name:’djkd’,age:20} 主要应用于web开发中

        ***xml和html都是树形结构

5、解析xml:

        前台也能解析xml,几乎很少使用;

        后台:sax解析:不需要加载整个文件  边加载边解析   适合处理大型xml书籍

                dom解析:一次性将文档加载到内存中,增删改查的操作都可

                JDom:java对文档解析 是dom4j的前身

                dom4j:实际开发中最常用的解析开发包

        Model(领域模型):pojo、vo、bo......

6、XML的读写操作

测试xml读
//创建一个解析器
    SAXReader saxReader = new SAXReader();
    //获取xml文档
    Document document = saxReader.read("src/resource/student.xml");

    //获取文档和节点
    Element rootElement = document.getRootElement();

//获取子节点
    //获取多个节点 elements
    List<Element> stus = rootElement.elements("stu");
    for (Element stu:stus){
        System.out.println(stu.asXML());
    }

//获取单节点 element,默认读取第一个stu
    Element stu = rootElement.element("stu");

//获取子节点中的内容
    Element name = stu.element("name");
    System.out.println(name.asXML());
    System.out.println(stu.elementText("address"));
    System.out.println(name.getText());

//获取属性
    Attribute id = stu.attribute("id");
    System.out.println(id.asXML());
    System.out.println(id.getName()+"->"+id.getValue());
    System.out.println(stu.attributeValue("age"));
读取xml--》model
public class TestXmlReaderToModel {
    public static void main(String[] args) throws DocumentException {
        System.out.println(readXml());

    }

    public static List<Student> readXml() throws DocumentException {
        List<Student> students = new ArrayList<>();
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("src/resource/Student.xml");

        Element rootElement = document.getRootElement();
        List<Element> stuList = rootElement.elements("stu");

        for (Element stu : stuList) {
            students.add(new Student(
                    Integer.parseInt(stu.attributeValue("id")),
                    Integer.parseInt(stu.attributeValue("age")),
                    stu.elementText("name"),
                    stu.elementText("address")
            ));
        }
        return students;
    }

测试XML写

public static void main(String[] args) throws IOException {
        //创建文档
        Document document = DocumentHelper.createDocument();
        //添加根节点:第一个添加进去的节点,就是根节点
        Element rootElement= document.addElement("stus");
        //添加子节点
        Element stu = rootElement.addElement("stu");
        Element name = stu.addElement("name");
        //给子节点赋值
        name.setText("小徐");
        stu.addElement("address").setText("北京");
        stu.addAttribute("id","110");
        stu.addAttribute("age","20");

        Element stu1 = rootElement.addElement("stu");
        stu1.addElement("name").setText("阿克苏");
        stu1.addElement("address").setText("上海");
        Element hoobu = stu1.addElement("hoobu");
        hoobu.addElement("sing").setText("本草纲目");
        hoobu.addElement("code").setText("java");
        hoobu.addAttribute("nums","5");
        stu1.addAttribute("id","112");
        stu1.addAttribute("age","18");

//        System.out.println(document.asXML());

        //设置输出格式化:没有格式的  默认
        OutputFormat compactFormat = OutputFormat.createCompactFormat();
        //设置输出格式化:有格式的
        OutputFormat prettyPrint = OutputFormat.createPrettyPrint();

        //写xml文件的流 (包装(处理)流)
//        XMLWriter xmlWriter = new XMLWriter(compactFormat);//默认格式 无变化
        XMLWriter xmlWriter = new XMLWriter(prettyPrint);

        //设置节点流(直接连着目标资源)
        xmlWriter.setWriter(new FileWriter("src/resource/students.xml"));
        xmlWriter.write(document);

写xml

public class TestModelToXmlWriter {
    public static void main(String[] args) throws IOException {
        List<Student> stus = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            stus.add(new Student(100+i,20+i,"张三丰","上海"));
        }

        write("src/resource/students.xml",stus);
    }
    public  static void write(String path,List<Student> stus) throws IOException {
        Document document = DocumentHelper.createDocument();
        Element rootElement = document.addElement("student");

        for (Student stu:stus){
            Element element = rootElement.addElement("stu");
            element.addElement("name").setText(stu.getName());
            element.addElement("address").setText(stu.getAddress());
            element.addElement("id",stu.getId()+"");
            element.addElement("age",stu.getAge()+"");


        }


        XMLWriter xmlWriter = new XMLWriter(new FileWriter(path), OutputFormat.createPrettyPrint());
        xmlWriter.write(document);
        xmlWriter.flush();
        xmlWriter.close();
    }
}

vscode最新插件合集(20190814)part1,共2个分包(part1/2),都下载后用命令“copy /b extensions.zip.rm1+extensions.zip.rm2 extensions.zip”合并再解压。 包合以下插件: wholroyd.jinja-0.0.8 daltonjorge.scala-0.0.5 eriklynd.json-tools-1.0.2 truman.autocomplate-shell-0.1.1 sensourceinc.vscode-sql-beautify-0.0.4 danields761.dracula-theme-from-intellij-pythoned-0.1.4 gerane.theme-druid-0.0.2 luqimin.forgive-green-0.2.1 mohsen1.prettify-json-0.0.3 chrmarti.regex-0.2.0 kalitaalexey.vscode-rust-0.4.2 ZakCodes.rust-snippets-0.0.1 itryapitsin.scala-0.1.7 itryapitsin.scalasnippets-0.1.7 vahidk.tensorflow-snippets-0.3.3 formulahendry.terminal-0.0.10 qub.qub-xml-vscode-1.2.8 waderyan.nodejs-extension-pack-0.1.9 jasonnutter.search-node-modules-1.3.0 christian-kohler.path-intellisense-1.4.2 christian-kohler.npm-intellisense-1.3.0 josephtbradley.hive-sql-0.0.4 magicstack.magicpython-1.1.0 ms-python.anaconda-extension-pack-1.0.1 mooman219.rust-assist-0.2.3 slevesque.vscode-hexdump-1.7.2 coenraads.bracket-pair-colorizer-1.0.61 bibhasdn.django-snippets-1.1.1 bibhasdn.django-html-1.3.0 octref.vscode-json-transform-0.1.2 xabikos.javascriptsnippets-1.7.2 jithurjacob.nbpreviewer-1.2.2 kondratiev.sshextension-0.5.0 humy2833.ftp-simple-0.7.0 batisteo.vscode-django-0.19.0 fwcd.kotlin-0.1.13 reditorsupport.r-lsp-0.1.0 ms-vsts.team-1.149.2 donjayamanne.jupyter-1.1.5 rust-lang.rust-0.6.1 grapecity.gc-excelviewer-2.1.32 vscjava.vscode-java-pack-0.7.1 ms-toolsai.vscode-ai-0.5.1 dbaeumer.vscode-eslint-1.9.0 ms-vscode.azure-account-0.8.4 rogalmic.bash-debug-0.3.5 donjayamanne.python-extension-pack-1.6.0 redhat.vscode-yaml-0.4.1 adisreyaj.swagger-snippets-0.0.1 alefragnani.bookmarks-10.4.4 arjun.swagger-viewer-2.2.2 dotjoshjohnson.xml-2.5.0 fisheva.eva-theme-0.7.7 vscjava.vscode-java-dependency-0.5.1 deerawan.vscode-hasher-1.0.1 vscjava.vscode-java-debug-0.20.0 scala-lang.scala-0.3.4 eg2.vscode-npm-script-0.3.8 vscjava.vscode-maven-0.18.1 ms-vscode.go-0.11.4 lextudio.restructuredtext-113.0.0 pkief.material-icon-theme-3.8.1 ms-azuretools.vscode-docker-0.7.0 redhat.java-0.47.0 julialang.language-julia-0.12.0 ms-kubernetes-tools.vscode-kubernetes-tools-1.0.2 yzhang.markdown-all-in-one-2.4.2 ms-vscode.cpptools-0.24.1 davidanson.vscode-markdownlint-0.30.1 zhuangtongfa.material-theme-2.26.3 formulahendry.code-runner-0.9.12 ikuyadeu.r-1.1.1 bitlang.cobol-5.2.4 vscjava.vscode-java-test-0.19.0 humao.rest-client-0.22.0 ms-ceintl.vscode-language-pack-zh-hans-1.37.3 ms-ceintl.vscode-language-pack-zh-hans-1.37.5 mtxr.sqltools-0.20.1 ms-vscode-remote.remote-wsl-0.39.2 alefragnani.bookmarks-10.5.0 ms-vsliveshare.vsliveshare-1.0.694 visualstudioexptteam.vscodeintellicode-1.1.9 ms-python.python-2019.8.30787 coenraads.bracket-pair-colorizer-2-0.0.28 dart-code.flutter-3.3.0 dart-code.dart-code-3.3.0 ibm.db2connect-win-1.0.2 oderwat.indent-rainbow-7.4.0 ms-vscode-remote.vscode-remote-extensionpack-0.16.0 ms-vscode-remote.remote-ssh-0.45.5 ms-vscode-remote.remote-ssh-edit-0.45.5 ms-vscode-remote.remote-containers-0.67.3 ms-vscode-remote.remote-ssh-explorer-0.45.5 foxundermoon.shell-format-6.1.1 qcz.text-power-tools-1.11.1 gruntfuggly.todo-tree-0.0.141 vscode-icons-team.vscode-icons-9.2.0 tomoki1207.pdf-0.5.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值