1.XML介绍
1.什么是XML
XML(eXtensible Markup Language,可扩展标记语言)是一种用于创建自定义标记的文本格式,它可以用于描述和存储各种数据和文档类型。它的主要标志是语法简洁,同时具备可扩展性,可读性好,易于处理和转换等特点。
XML的设计目标是为了能够在不同计算机系统之间进行数据交换,特别是互联网上的数据交换。XML的基本语法规则非常简单,通常由以下结构组成:
- 元素(Element):用于描述数据项或数据集合。
- 属性(Attribute):用于为元素提供附加的信息。
- 文本(Text):用于存储元素包含的数据内容。
- 注释(Comment):用于添加对文档内容的注释和解释。
- 指令(Instruction):用于提供有关文档的处理指令。
XML还支持创建和使用自定义标记和命名空间,可以根据需要定义新的标记和扩展现有的标记集合。这使得XML非常灵活和可扩展,也易于处理和转换成其它格式,如HTML、JSON等。
2.为什么要学习XML
学习XML技术可以使你掌握一种通用的数据交换和存储格式,扩展你的技术栈,并为你适应新的行业标准和业务需求打下坚实的基础。
2.XML建模介绍
XML(可扩展标记语言)建模是一种基于文本的建模技术,用于描述数据的结构和信息之间的关系。XML建模可以被应用于许多领域,例如Web服务、数据交换、配置文件等。
在XML建模中,数据和元数据被描述为标签、属性和值对的组合。这些标签可以嵌套在其他标签内部,形成树状结构。标签按照一定的规则呈现数据之间的层次关系,并定义数据的类型及其约束规则。标签可以被命名,从而创建具有唯一标识符的数据对象。属性则可以为标签提供额外的信息。
3.XML建模的优点
- 简单且易于实现,不需要任何特殊的应用程序或工具来使用和编辑XML文件。
- 具有良好的可扩展性,可以方便地添加新的元素或属性。
- 具有强大的描述能力,可以准确地表示数据之间的关系和层次结构。
- 支持多平台和多语言,可以轻松地在所有主流系统和编程语言中使用。
- 可以轻松地与其他Web技术(如CSS和JavaScript)相结合,以创建动态的Web应用程序。
4.XML建模的实例
- 这是一个config.xml
package com.yuan.xml; public class ForwordModel { private String name; private String path; private boolean readirect; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public boolean isReadirect() { return readirect; } public void setReadirect(boolean readirect) { this.readirect = readirect; } @Override public String toString() { return "ForwordModel [name=" + name + ", path=" + path + ", readirect=" + readirect + "]"; } } • 1 • 2 • 3 • 4 • 5 • 6 • 7 • 8 • 9 • 10 • 11 • 12 • 13 • 14 • 15 • 16 • 17 • 18 • 19 • 20 • 21 • 22 • 23 • 24 • 25 • 26 • 27 • 28 • 29 • 30 • 31
package com.yuan.xml; import java.util.HashMap; import java.util.Map; public class ActionModel { private String path; private String type; private Map<String, ForwordModel> map = new HashMap<String, ForwordModel>(); public String getPath() { return path; } public void setPath(String path) { this.path = path; } public String getType() { return type; } public void setType(String type) { this.type = type; } public void add(ForwordModel forwordModel) { map.put(forwordModel.getName(), forwordModel); } public ForwordModel pop(String name) { return map.get(name); } @Override public String toString() { return "ActionModel [path=" + path + ", type=" + type + "]"; } } • 1 • 2 • 3 • 4 • 5 • 6 • 7 • 8 • 9 • 10 • 11 • 12 • 13 • 14 • 15 • 16 • 17 • 18 • 19 • 20 • 21 • 22 • 23 • 24 • 25 • 26 • 27 • 28 • 29 • 30 • 31 • 32 • 33 • 34 • 35 • 36 • 37 • 38 • 39 • 40 • 41 • 42 • 43 • 44
package com.yuan.xml; import java.util.HashMap; import java.util.Map; public class ConfigModel { private Map<String, ActionModel> map = new HashMap<String, ActionModel>(); public void add(ActionModel actionModel) { map.put(actionModel.getPath(), actionModel); } public ActionModel pop (String path){ return map.get(path); } } • 1 • 2 • 3 • 4 • 5 • 6 • 7 • 8 • 9 • 10 • 11 • 12 • 13 • 14 • 15 • 16 • 17 • 18
4.工厂模式
package com.yuan.xml; import java.io.InputStream; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * 工厂模式 * @author yuanh * */ public class ConfigModelFactory { public static ConfigModel build(String name) throws Exception { InputStream inputStream = ConfigModelFactory.class.getResourceAsStream(name);//解析传参的文件 SAXReader sr = new SAXReader(); Document read = sr.read(inputStream); ConfigModel c = new ConfigModel(); List<Element> list = read.selectNodes("/config/action");//拿到所有action for (Element element : list) { ActionModel a = new ActionModel();//action对象 a.setPath(element.attributeValue("path"));//赋值path a.setType(element.attributeValue("type"));//赋值type c.add(a);//添加action对象 List<Element> list2 = element.selectNodes("forward");//拿到action中的forwarod for (Element element2 : list2) { ForwordModel f = new ForwordModel(); f.setName(element2.attributeValue("name"));//赋值name f.setPath(element2.attributeValue("path"));//赋值path f.setReadirect(!"false".equals(element2.attributeValue("readirect")));//赋值readirect a.add(f);//添加forward对象 } } return c;//返回config对象 } public static ConfigModel build() throws Exception { return build("/config.xml"); } public static void main(String[] args) throws Exception { ConfigModel build = build(); ActionModel a = build.pop("/loginAction"); ForwordModel f = a.pop("b"); System.out.println(f); } } • 1 • 2 • 3 • 4 • 5 • 6 • 7 • 8 • 9 • 10 • 11 • 12 • 13 • 14 • 15 • 16 • 17 • 18 • 19 • 20 • 21 • 22 • 23 • 24 • 25 • 26 • 27 • 28 • 29 • 30 • 31 • 32 • 33 • 34 • 35 • 36 • 37 • 38 • 39 • 40 • 41 • 42 • 43 • 44 • 45 • 46 • 47 • 48 • 49
3.XML的作用
1.数据交换
XML是一种通用的数据交换格式,被广泛应用于数据传输和存储。很多应用程序和系统都可以使用XML来交换数据,包括Web服务、数据库、应用程序之间的数据传输等。
2.数据存储
XML文件可以用来存储各种类型的数据和文档,包括配置文件、日志文件、报告等。在Web开发中,很多Web应用程序都使用XML来保存数据,如RSS、Atom等Web信息源格式。
3.数据处理
XML具有灵活的结构和可扩展的特性,可以用来表示复杂的数据结构和关系。使用XML可以轻松处理和查询大量的数据,并且可以方便地转换成其它格式,如HTML、JSON等。
4.Web开发
XML是Web开发中的一个重要技术,它可以用来描述页面结构、样式信息和数据内容。例如,使用XML可以创建可扩展的标记语言,如XHTML,同时可以使用XML与CSS和JavaScript等技术结合,创建交互性和动态性的Web应用程序。
5.行业标准
许多行业都采用XML作为其数据交换和存储的标准格式,如OA、电子商务、金融等领域。因此,了解XML技术可以使你更好地理解和应用行业标准和业务需求。