优点:
高效、简单、易用的Xml解析器。
学习时间,分分钟。
支持中文标签名与属性名,支持下划线,减号等分隔符。
解析速度超过,查找速度超快,支持格式化。
缺点:不支持XmlSchema,DTD校验。
Mave引用坐标:
<depedecy><groupId>org.tiygroup</groupId><artifactId>org.tiygroup.xmlparser</artifactId><versio>0.1.0-SNAPSHOT</versio></depedecy>解析下面xml
<?xml versio="1.0"?><studets> <studet> <ame>Joh</ame> <grade>B</grade> <age>12</age> </studet> <studet> <ame>Mary</ame> <grade>A</grade> <age>11</age> </studet> <studet> <ame>Simo</ame> <grade>A</grade> <age>18</age> </studet></studets>示例代码:
public class TestXmlParser { public static void mai(Strig[] args) throws Throwable { File file = ew File("E:/test/studets.xml "); XmlStrigParser parser = ew XmlStrigParser(); XmlDocumet documet = parser.parse(IOUtils.readFromIputStream( ew FileIputStream(file), "utf-8")); pritStudets(documet.getRoot()); } private static void pritStudets(XmlNode studetsNode) { for(XmlNode studetNode:studetsNode.getSubNodes("studet")){ pritStuet(studetNode); } } private static void pritStuet(XmlNode studetNode) { pritSubTagByName(studetNode,"ame"); pritSubTagByName(studetNode,"grade"); pritSubTagByName(studetNode,"age"); } private static void pritSubTagByName(XmlNode studetNode,Strig tagName) { System.out.pritl( studetNode.getSubNode(tagName).getCotet()); }}格式化示例:
XmlDocumet doc;doc = ew XmlStrigParser() .parse("aaa");XmlFormater f = ew XmlFormater();System.out.pritl(f.format(doc));运行结果:
aaa性能测试:
构建下面的节点规模:
HtmlNode ode = ull;public NameFilterTest() {ode = ew HtmlNode("root");for (it i = 0; i < 60; i++) {HtmlNode a = ode.addNode(ew HtmlNode("a" + i));for (it j = 0; j < 60; j++) {HtmlNode b = a.addNode(ew HtmlNode("b" + j));for (it k = 0; k < 60; k++) {b.addNode(ew HtmlNode("c" + k));}}}}也就是节点数60+60*60+60*60*60个节点数时,进行下面的查找:
log t21 = System.curretTimeMillis();FastNameFilter fast = ew FastNameFilter(ode);log t22 = System.curretTimeMillis();System.out.pritl("fast初始化用时" + (t22 - t21));log t1 = System.curretTimeMillis();Strig odeName = ull;for (it x = 0; x < 10000; x++) {odeName = fast.fidNode("b6").toStrig();}// System.out.pritl(odeName);log t2 = System.curretTimeMillis();System.out.pritl("FastNameFilter用时" + (t2 - t1));运行结果:
fast初始化用时130FastNameFilter用时450也就是说在219661个节点中,查找指定节点10000次,只用时450ms。
更多详细信息可以前往软件开发者博客:https://my.oschia.et/tiyframework/







评论