XML

学习目标:
定义良好格式的xml文档
使用DOM解析xml文档
使用DOM4J解析文档

元素的命名规则如下:
名称中可以包含字母、数字或者其他的字符
名称不能以数字或者标点符号开始
名称不能以字符“xml”(或者XML、Xml)开始
名称中不能含空格

dom解析 java自带的
解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。
优点:整个文档树在内存中,便于操作;
支持删除、修改、重新排列等多种功能;
缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;
使用场合:一旦解析了文档还需多次访问这些数据;
硬件资源充足(内存、CPU)。

sax解析 java自带
为解决DOM的问题,出现了SAX。
SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。
优点:不用事先调入整个文档,占用资源少;
SAX解析器代码比DOM解析器代码小,适于Applet(java小应用程序),下载。
缺点:不是持久的;
事件过后,若没保存数据,那么数据就丢了;
无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;
使用场合:Applet;
只需XML文档的少量内容,很少回头访问;
机器内存少;
注意: DOM和SAX不针对特定语言,只是定义了一些接口,以及部分缺省实现(使用空方法实现接口)
3.JDOM
针对Java的特定文档模型
使用具体类而不使用接口
API大量使用了Java集合类型
4.DOM4J
非常优秀的开源Java XML API
面向接口编程,比JDOM更加灵活
使用Java集合框架处理XML

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document root = builder.parse(new File(“Phone.xml”));

    List<Phone> phones = new ArrayList<>();
    NodeList nodeList = root.getElementsByTagName("Item");
    System.out.println(nodeList.getLength());
    for (int i = 0; i < nodeList.getLength(); i++) {
        Element element = (Element) nodeList.item(i);
        String title = element.getElementsByTagName("title").item(0).getTextContent();
        String link = element.getElementsByTagName("link").item(0).getTextContent();
        String description = element.getElementsByTagName("description").item(0).getTextContent();
        String pubDate = element.getElementsByTagName("pubDate").item(0).getTextContent();


        Phone phone = new Phone();
        phone.setDescription(description);
        phone.setLink(link);
        phone.setPubDate(new SimpleDateFormat("yyyy-MM-dd").parse(pubDate));
        phone.setTitle(title);


        System.out.println(phone.toString());
    }

xml结构

<?xml version="1.0" encoding="UTF-8"?> .NET高级编程 王姗 包含C#框架和网络编程等 XML基础编程 李明明 包含XML基础概念和基本用法

使用DOM解析数据
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document root = builder.parse(new File(“Phone.xml”));

    List<Phone> phones = new ArrayList<>();
    NodeList nodeList = root.getElementsByTagName("Item");
    System.out.println(nodeList.getLength());
    for (int i = 0; i < nodeList.getLength(); i++) {
        Element element = (Element) nodeList.item(i);
        String title = element.getElementsByTagName("title").item(0).getTextContent();
        String link = element.getElementsByTagName("link").item(0).getTextContent();
        String description = element.getElementsByTagName("description").item(0).getTextContent();
        String pubDate = element.getElementsByTagName("pubDate").item(0).getTextContent();

        Phone phone = new Phone();
        phone.setDescription(description);
        phone.setLink(link);
        phone.setPubDate(new SimpleDateFormat("yyyy-MM-dd").parse(pubDate));
        phone.setTitle(title);

        System.out.println(phone.toString());
    }

使用DOM4J
SAXReader reader = new SAXReader();
try {
Document document = reader.read(new File(“xml/Phone.xml”));
// 2.获取根节点
Element root = document.getRootElement();
// String text= root.getText();// 获取根节点的文本
//根据名称获取所有的Item及诶单
// String text = root.elementText(“title”);
List ndes = root.elements(“Item”);// 获取所有指定子节点
for (int i = 0; i < ndes.size(); i++) {
Element element = (Element) ndes.get(i);
List subNodes = element.elements();//获取所有节点
for (int j = 0; j < subNodes.size(); j++) {
Element subNode= (Element) subNodes.get(j);
System.out.println(subNode.getName()+":" + subNode.getText());
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
使用DOM创建文档
// 得到 Dom解析器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 得到dom解析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 创建文本文档
Document d = builder.newDocument();
// 创建 根节点
Element root = d.createElement(“PhoneInfos”);
// 把根节点添加到 文本里面
d.appendChild(root);
for (int i = 0; i < 3; i++) {
Element phone = d.createElement(“phone”);
phone.setAttribute(“id”, “1000”+i);
Element name = d.createElement(“name”);
Node node = d.createTextNode(“张三”+i);
name.appendChild(node);
phone.appendChild(name);
root.appendChild(phone);
}

    d.setXmlStandalone(true);
    // d.getXmlEncoding()
    d.setXmlVersion("1.0");
    // 创建变压器 工厂
    TransformerFactory tFactory = TransformerFactory.newInstance();
    // 得到变压器
    Transformer former = tFactory.newTransformer();
    // 设置编码方式
    former.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    // 是否缩进换行
    former.setOutputProperty(OutputKeys.INDENT, "yes");
    // 创建source资源
    DOMSource domSource = new DOMSource(root);
    // 得到一个打印流
    OutputStream stream = new FileOutputStream("dom.xml");
    former.transform(domSource, new StreamResult(stream));

修改和删除

/1.获取document对象, 读取xml文件
SAXReader reader = new SAXReader();
try {
Document document = reader.read(new File(“xml/Phone.xml”));
// 2.获取根节点
Element root = document.getRootElement();
// 添加节点 并返回被添加的节点
/* Node brandNode = root.addElement(“Brand”);
((Element) brandNode).addAttribute(“type”, “华为”);
brandNode.setText(“华为华为”);*/

       root.remove(root.element("Brand"));

// 保存文档
XMLWriter writer= new XMLWriter(new FileWriter(“xml/Phone.xml”));
writer.write(root);

        writer.close();
        System.out.println("保存成功");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值