如何通过StringTemplate匹配xml字符串

来源:互联网 发布:中国农业银行软件 编辑:程序博客网 时间:2024/06/06 05:10

在实际项目中我们经常要使用xml文件,如何通过StringTemplate工具匹配xml 文件,即通过xml模板快速获取目标xml文件,如下是一个小例子。

1.字符串模板工具类, 直接看代码StringTemplateUtil.

<span style="font-size:12px;">package com.ilucky.util.template;import org.joda.time.DateTime;import org.stringtemplate.v4.ST;/** * @author IluckySi * @date 20140718 */public class StringTemplateUtil {private ST stringTemplate;    public StringTemplateUtil(String templateXml) {        this.stringTemplate = new ST(templateXml,'$','$');    }    public StringTemplateUtil add(String key, String value) {        this.stringTemplate.add(key, value);        return this;    }    public StringTemplateUtil addHeader(String name){        String time = new DateTime().toString("yyyy/MM/dd HH:mm:ss.SSS");        stringTemplate.add("name", name);        stringTemplate.add("time", time);        return this;    }    public String build() {        return stringTemplate.render();    }}</span>
2.获取xml文件的工具类,直接看代码XmlReadUtil。

<span style="font-size:12px;">package com.ilucky.util.template;import java.io.IOException;import java.io.InputStream;import org.apache.commons.io.IOUtils;/** * @author IluckySi * @date 20140718 */public class XmlReadUtil {public  String readXml(String path) {    String result = null;    InputStream is = null;      try {          is = this.getClass().getResourceAsStream(path);          result = IOUtils.toString(is, "UTF-8");      } catch (IOException e) {          e.printStackTrace();      } finally {          IOUtils.closeQuietly(is);      }      return result;}}</span>
3.xml模板文件,直接看代码test.xml.

<span style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?><root><head><name>$name$</name><time>$time$</time></head><body><ip>$ip$</ip><mac>$mac$</mac></body></root></span>
4.最后看测试类,直接看代码MainTest。

<span style="font-size:12px;">package com.ilucky.util.template;import org.apache.commons.lang3.StringUtils;/** * @author IluckySi * @date 20140718 */public class MainTest {public static void main(String[] args) {//获取xml文件中的内容,并将其内容编码为UTF-8.String path = "/com/ilucky/util/template/test.xml";String templateXml = new XmlReadUtil().readXml(path);//通过StringTemplateUtil工具获取目标xml.StringTemplateUtil util = new StringTemplateUtil(templateXml);util.addHeader("IluckySi");util.add("ip", "127.0.0.1");util.add("mac", "11-22-33-44-55-66");String result = util.build();System.out.println("经过字符串模板转换后的xml字符串为: \r\n" + result);//快速获取xml指定位置内容.System.out.println(StringUtils.substringBetween(result, "<name>", "</name>"));System.out.println(StringUtils.substringBetween(result, "<time>", "</time>"));System.out.println(StringUtils.substringBetween(result, "<ip>", "</ip>"));System.out.println(StringUtils.substringBetween(result, "<mac>", "</mac>"));}}/**输出结果:经过字符串模板转换后的xml字符串为: <?xml version="1.0" encoding="UTF-8"?><root><head><name>IluckySi</name><time>2014/07/18 20:51:34.597</time></head><body><ip>127.0.0.1</ip><mac>11-22-33-44-55-66</mac></body></root>IluckySi2014/07/18 20:51:34.597127.0.0.111-22-33-44-55-66*/</span>

0 0
原创粉丝点击