公司网站建设服务费计入什么科目,阿里云安装两个wordpress,网站建设意向表,wordpress图片视频分享XML
XML(Extensible Markup Language)是可扩展标记语言的缩写#xff0c;它是一种数据表示格式#xff0c;可以描述复杂的数据结构#xff0c;常用于传输和存储数据 作用#xff1a; 用于进行存储数据和传输数据作为软件的配置文件 第一行是文档声明
?xml version它是一种数据表示格式可以描述复杂的数据结构常用于传输和存储数据 作用 用于进行存储数据和传输数据作为软件的配置文件 第一行是文档声明
?xml version1.0 encodingUTF-8 ?versionXML默认的版本号码、该属性是必须存在的 encoding本XML文件的编码
特殊字符
lt; 小于gt; 大于amp; 和号apos; 单引号quot; 引号
注释
!-注释内容--
文档约束 限定xml文件中的标签和属性 DTD文档约束schema文档约束约束能力更强大 XML解析
使用程序读取XML内容
常用的解析工具 JAXP SUN公司提供的一套XML的解析的API JDOM JDOM是一个开源项目它基于树型结构利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。 dom4j 是JDOM的升级品用来读写XML文件的。具有性能优异、功能强大和极其易使用的特点它的性能超过sun公司官方的dom 技术同时它也是一个开放源代码的软件Hibernate也用它来读写配置文件。 jsoup 功能强大DOM方式的XML解析开发包尤其对HTML解析更加方便
dom4j解析XML元素
思想得到文档对象document从获取元素对象和内容 ListElement elements() 得到当前元素下所有子元素 ListElement elements(String name) 得到当前元素下指定名字的子元素返回集合 Element element(String name) 得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个 String getName() 得到元素名字 String attributeValue(String name) 通过属性名直接得到属性值 String elementText(子元素名) 得到指定名称的子元素的文本 String getText() 得到文本
XML检索Xpath
Dom4j需要对文件进行全部解析然后再寻找数据
Xpath技术更适合做信息检索
绝对路径 /根元素/子元素/孙元素 从根元素开始一级一级向下查找不能跨级
public void parse01() throws Exception {// a、创建解析器对象SAXReader saxReader new SAXReader();// b、把XML加载成Document文档对象Document document saxReader.read(XPathDemo.class.getResourceAsStream(/Contacts2.xml));// c、直接检索ListNode nodes document.selectNodes(/contactList/contact/name);for (Node node : nodes) {Element nameEle (Element) node;System.out.println(nameEle.getTextTrim());}}
相对路径 ./子元素/孙元素 从当前元素开始一级一级向下查找不能跨级
public void parse02() throws Exception {// a、创建解析器对象SAXReader saxReader new SAXReader();// b、把XML加载成Document文档对象Document document saxReader.read(XPathDemo.class.getResourceAsStream(/Contacts2.xml));Element root document.getRootElement();// c、直接检索.代表的就是当前相对的根元素ListNode nodes root.selectNodes(./contact/name);for (Node node : nodes) {Element nameEle (Element) node;System.out.println(nameEle.getTextTrim());}}
全文搜索直接全文搜索所有的name元素并打印 //contact 找contact元素无论元素在哪里 //contact/name 找contact无论在哪一级但name一定是contact的子节点 //contact//name contact无论在哪一种name只要是contact的子孙元素都可以找到
public void parse03() throws Exception {// a、创建解析器对象SAXReader saxReader new SAXReader();// b、把XML加载成Document文档对象Document document saxReader.read(XPathDemo.class.getResourceAsStream(/Contacts2.xml));// c、直接检索// ListNode nodes document.selectNodes(//name);// ListNode nodes document.selectNodes(//contact/name);ListNode nodes document.selectNodes(//contact//name);for (Node node : nodes) {Element nameEle (Element) node;System.out.println(nameEle.getTextTrim());}}
属性查找在全文中搜索属性或带属性的元素 //属性名 查找属性对象无论是哪个元素只要有这个属性即可。 //元素[属性名] 查找元素对象全文搜索指定元素名和属性名。 //元素//[属性名‘值’] 查找元素对象全文搜索指定元素名和属性名并且属性值相等。
public void parse04() throws Exception {// a、创建解析器对象SAXReader saxReader new SAXReader();// b、把XML加载成Document文档对象Document document saxReader.read(XPathDemo.class.getResourceAsStream(/Contacts2.xml));// c、检索属性信息ListNode nodes document.selectNodes(//id);for (Node node : nodes) {Attribute attribute (Attribute) node;System.out.println(attribute.getName() attribute.getValue());}// 检索元素的ListNode nodes1 document.selectNodes(//contact[id]);for (Node node : nodes1) {Element nameEle (Element) node;System.out.println(nameEle.elementTextTrim(name));}// 检索元素Node node document.selectSingleNode(//contact[id3]);Element conEle (Element) node;System.out.println(conEle.elementTextTrim(name));}
设计模式 工厂模式对象通过工厂的方法创建返回工厂的方法可以为该对象进行加工和数据注入可以实现类与类之间的解耦操作装饰模式创建一个新类包装原始类从而在新类中提升原来类的功能在不改变原类的基础上动态的扩展一个类的功能