马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
XML(EXtensible Markup Language),可扩展标记语言。一种用于存储和传输数据的标记语言。XML 与利用体系、编程语言的开发平台无关。实现差异体系之间的数据交换。
作用:数据交互;设置应用步伐和网站;Ajax基石
- <!-- 声明 -->
- <?xml version="1.0" encoding="UTF-8"?>
- <books>
- <!-- 文档元素描述信息(文档结构) -->
- <!-- 图书信息 -->
- <book id="bk101">
- <author>王珊</author>
- <title>.NET高级编程</title>
- <description>包含C#框架和网络编程等</description>
- </book>
- <book id="bk102">
- <author>李明明</author>
- <title>XML基础编程</title>
- <description>包含XML基础概念和基本作用</description>
- </book>
- </books>
复制代码 XML 文档内容由一系列标签元素构成
<元素名 属性名 = "属性值">元素内容</元素名>
- 属性值用双引号包裹
- 一个元素可以有多个属性
- 属性值中不能直接包罗:< " &
- 不发起使用的字符:' >
- <!-- 空元素 -->
- <name> </name>
- <name></name>
- <name/>
复制代码 XML 编写留意事项
- 全部XML 元素都必须有竣事标签
- XML 标签对巨细写敏感
- XML 必须正确的嵌套
- 同级标签以缩进对齐
- 元素名称可以包罗字母、数字或其他的字符
- 元素名称不能以数字大概标点符号开始
- 元素名称中不能含空格
属性定名空间
- <?xml version="1.0" encoding="UTF-8"?>
- <batchCompany xmlns="http://www.Aptech_edu.ac"
- xmlns:tea="http://www.tea.org">
- <batch-list>
- <batch type="thirdbatch">第三批次</batch>
- <batch tea:type="thirdbatch">第三批次</batch>
- <batch>午班批次</batch>
- </batch-list>
- </batchCompany>
复制代码 除非带有前缀,否则属性属于所属的元素的定名空间
DOM
文档对象模子 ( Document Object Model ) 。DOM 把 XML 文档映射成一个倒挂的树。
DOM剖析包:org.w3c.dom
常用接口常用方法阐明Document:体现整个 XML 文档NodeList getElementsByTagName(String Tag)按文档序次返回文档中指定标记名称的全部元素聚集Element createElement(String tagName)创建指定标记名称的元素Node:该文档树中的单个节点NodeList getChildNodes()获取该元素的全部子节点,返回节点聚集Element:XML 文档中的一个元素String getTagName()获取元素名称DOM4J
DOM4J(Document Object Model for XML in Java)是一个简单、轻量级的Java库,用于处理惩罚XML文档。它提供了一种方式来读取、修改和写入XML文件。
在 DOM4J 中,这些类是构成XML文档的根本构成部门,它们共同构成了DOM4J的焦点模子:
- Document 类:代表整个XML文档。每个 XML 文档的根元素就是 Document 对象的子对象
- Element 类:代表XML文档中的元素节点。每个 Element 都著名称,可以有子元素、文本内容及属性
- Text 类:体现XML文档中的文本节点。Text 节点可以包罗在 Element 中
- Attribute 类:代表元素上的属性。在 <element attr="value"> 中,attr 是属性名,“value”` 是该属性的值
DOM4J 剖析 XML
方法形貌举例SAXReader()读取 xml 文件// 将 xml 文件加载到内存中 XML 剖析器
SAXReader saxReader = new SAXReader();
// document 加载实验 xml 文档获取 Document 对象
Document document = saxReader.read(XML路径);getRootElement()获取 XML 根节点Element rootElement = document.getRootElement();elements()获取当前节点下全部子节点// 获取根节点下全部子节点
List<Element> Elist = rootElement.elements();elements(“节点名”)根据指定子元素名,获取元素下全部子节点// 获取节点名称为books下全部子节点
List<Element> Elist = rootElement.elements(“books”);element(“节点名”)根据指定子元素名,获取子元素对象,如果重复,则获取第一个//获取节点名称为books下单个子节点
Element element= rootElement.element(“books”);setText()设置元素文本内容newelement.setText(“内容”);getText()获取当前节点文本内容element.getText()elementText(“节点名”)根据指定子元素名,获取元素中的文本e.elementText(“book”)attributeValue(“属性名”)获取当前节点属性e.attributeValue(“name”)addElement(“节点名”)创建节点Element对象Element newelement = rootElement.addElement(“span”);addAttribute(“节点属性名”,“属性值”)节点添加,修改属性Element对象newelement.addAttribute(“type”,“属性值”);creatDocument()新XML添加Documen对象// 创建一个Document对象
Document read = DocumentHelper.createDocument();createPrettyPrint()设置XML编码// 创建OutputFormat对象,并设置编码集
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setEncoding(“UTF-8”);write()写入XML文件//写入XML文件的位置 以及指定的格式
XMLWriter xmlWriter=new XMLWriter(new FileWriter(“cs.xml”),outputFormat);
//开始写入XML文件 写入Document对象
xmlWriter.write(document);
xmlWriter.close();我们有两个 XML 文件
- 【students.xml】
- <?xml version="1.0" encoding="UTF-8"?>
- <stus>
- <stu id="1001">
- <name>张三</name>
- <age>21</age>
- <score value="80"/>
- </stu>
- <stu id="1002">
- <name>李四</name>
- <age>19</age>
- <score value="92"/>
- </stu>
- </stus>
复制代码- 【books.xml】
- <?xml version="1.0" encoding="UTF-8"?>
- <books>
- <!--图书信息 -->
- <book id="bk101">
- <author>王珊</author>
- <title>.NET高级编程</title>
- <description>包含C#框架和网络编程等</description>
- </book>
- <book id="bk102">
- <author>李明明</author>
- <title>XML基础编程</title>
- <description>包含XML基础概念和基本作用</description>
- </book>
- </books>
复制代码 起首界说类,在 UtilsXml 类中编写公用方法
- public class UtilsXml {
- static Document document = null;
- // 读取文档(用于 读取 修改 删除方法)
- public static void info(String path){
- try {
- //构建解析器
- SAXReader saxReader = new SAXReader();
- //通过read方法获得doc对象
- document = saxReader.read(path);
- } catch (DocumentException e) {
- throw new RuntimeException(e);
- }
- }
- // 写入文件(用于 修改 添加 删除方法)
- public static void OutputXml(String path){
- try {
- //document 写入
- XMLWriter xmlWriter = new XMLWriter(new FileWriter(path));
- xmlWriter.write(document);
- xmlWriter.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
复制代码 接下来分别界说读取、修改、添加、删除 XML 的静态方法
读取
- public static void showXml(){
- try {
- info("ch10/students.xml");
- //获得根节点
- Element root = document.getRootElement();
- //打印根节点名称
- System.out.println("根节点:"+root.getName());
- //获得所有子节点
- List<Element> elements = root.elements();
- for(Element element : elements){
- System.out.println("---------stu--------");
- //获得每个子节点上的id属性值
- String id = element.attributeValue("id");
- System.out.println("id:"+id);
- //获得stu下name元素节点
- Element name = element.element("name");
- System.out.println("name:"+name.getText());
- Element age = element.element("age");
- System.out.println("age:"+age.getText());
- Element score = element.element("score");
- System.out.println("score:"+score.attributeValue("value"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
复制代码 修改
- public static void editXml(){
- try {
- info("ch10/students.xml");
- //获得根节点
- Element root = document.getRootElement();
- List<Element> elementList = root.elements();
- for(Element element:elementList){
- if("1002".equals(element.attributeValue("id"))){
- element.element("name").setText("王五");
- }
- }
- //新增节点
- Element stu = root.addElement("stu");
- stu.addAttribute("id","1003");
- stu.addElement("name").setText("马六");
- stu.addElement("age").setText("20");
- stu.addElement("score").addAttribute("value","77");
- //document 写入students.xml
- OutputXml("ch10/students.xml");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
复制代码 添加
- public static void saveXml(){
- try {
- document = DocumentHelper.createDocument();
- // 添加 root 节点 根节点
- Element books = document.addElement("books");
- Element book1 = books.addElement("book");
- book1.addAttribute("id","bk101");
- book1.addElement("author").setText("王珊");
- book1.addElement("title").setText(".NET高级编程");
- Element book2 = books.addElement("book");
- book2.addAttribute("id","bk102");
- book2.addElement("author").setText("王明明");
- book2.addElement("title").setText("XML基础编程");
- OutputXml("ch10/books.xml");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
复制代码 删除
- public static void deleteXml(){
- try {
- info("ch10/books.xml");
- Element root = document.getRootElement(); // 获得根节点
- List<Element> elementList = root.elements();
- for(Element element:elementList){
- Element author = element.element("author");
- if(author.getText().equals("王明明")){
- element.getParent().remove(element);
- }
- }
- OutputXml("ch10/books.xml");
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
复制代码 在 main() 方法中依次调用上述方法
- public class UtilsXml {
- public static void main(String[] args) {
- //showXml(); //读取
- //editXml(); //修改
- //saveXml(); //添加
- deleteXml(); //删除
- }
- }
复制代码 |