来源:自学PHP网 时间:2015-04-14 14:51 作者: 阅读:次
[导读] 更多内容查看官网:http: www tinygroup orgTinyXmlParser一切以简单、实用、快速为主。示例1:Xml字符串解析比如,我们要解析一段Xml字符串,简单如下即可:XmlDocument xmlDocument = new XmlStri...
更多内容查看官网:http://www.tinygroup.org TinyXmlParser一切以简单、实用、快速为主。 示例1:Xml字符串解析比如,我们要解析一段Xml字符串,简单如下即可: XmlDocument xmlDocument = new XmlStringParser().parse(" 示例2:输出格式化后的Xml:XmlFormater formater = new XmlFormater(); System.out.println(formater.format(xmlDocument)); 运行结果如下:
当然换一种写法也是可以的,比如下面: XmlDocument xmlDocument = new XmlStringParser().parse("输出结果和上面是一样的。 示例3:中文标签支持XmlDocument document = new XmlStringParser().parse(" 上面的例子用了两种方式,一种是非格式化方式输出,默认是用一行输出的;另一种是格式化输出的:
可以看到对于中文标签及属性也有完美支持。 示例4:容错性示例XmlDocument document = new XmlStringParser().parse(" 上面的例子中, 标签没有结束标签。 输出结果如下:
可以看到,它已经尽最大可能来猜测是否正确 示例5:性能测试XmlNode node = null; public NameFilterTest() { node = new XmlNode("root"); for (int i = 0; i < 60; i++) { XmlNode a = node.addNode(new XmlNode("a" + i)); for (int j = 0; j < 60; j++) { XmlNode b = a.addNode(new XmlNode("b" + j)); for (int k = 0; k < 60; k++) { b.addNode(new XmlNode("c" + k)); } } } } 构建这么大一棵Dom树 long t21 = System.currentTimeMillis(); FastNameFilter 运行结果如下: 初始化用时:48 遍历用时:20 请注意,上面的时间单位不是分钟,不是秒钟,而是毫秒。 示例6:节点过滤对节点过滤是否方便才是最紧要的。这个功能,太过强大,因此,用例子已经演示不出它的强大了。直接贴接口: public interface NodeFilter 也就是说它支持节点指定属性名及指定属性值过滤(可以指定多组)、指定属性名过滤(不管是什么值都可以,可以指定多个)、可以指定排除属性及属性值(即不能包含的属性名及值,可以包含多组)、不能包含的属性(可以包含多组)、包含文本内容(可以指定多组)、不能包含的文件内容(可以指定多组),可以指定包含的节点名(可以指定多组)、可以指定不能包含的节点(可以指定多组)、可以指定必须在某个节点下(可以指定多组)、可以指定不能在某个节点下(可以指定多组)、可以指定至少包含某几个节点中的一个,可以指定至下包含某几个属性中的一个,可以根据节点名进行搜索。 上面的所有条件可以组合起来一起搜索。 说了这么多,看看测试用例: node = new XmlNode("root"); XmlNode n1 = node.addNode(new XmlNode("aa")); n1.setAttribute("a", "av"); n1.setAttribute("b", "bv"); n1.addNode(new XmlNode("a")); n1 = node.addNode(new XmlNode("aa")); n1.setAttribute("a", "av1"); n1.setAttribute("b", "bv1"); n1.setAttribute("c", "cv1"); n1.addNode(new XmlNode("b")); 上面构建了一棵Dom树: 下面是一堆的测试用例了: filter = new NameFilter(node); filter.clearCondition(); assertEquals(1, filter.findNodeList("root").size()); filter.setExcludeAttribute("c"); assertEquals(1, filter.findNodeList("aa").size()); // 测试包含属性名 filter.clearCondition(); assertEquals(1, filter.findNodeList("root").size()); filter.setIncludeAttributes("c"); assertEquals(1, filter.findNodeList("aa").size()); // 测试包含指定属性值 filter.clearCondition(); Hashtable 测试用例写得比较丑,但是对它的使用还是做了一个简单的演示。 上面所有的例子当中,把X变成Ht,就是针对Html解析器的了,API完全一致,用法完全相同。 区别在于Xml的标签及属性名是大小写敏感的,而Html是大小写不敏感的。 另外Html支持单标签。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com