加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何通过StringTemplate匹配xml字符串

发布时间:2020-12-15 22:35:26 所属栏目:百科 来源:网络整理
导读:在实际项目中我们经常要使用xml文件,如何通过StringTemplate工具匹配xml 文件,即通过xml模板快速获取目标xml文件,如下是一个小例子。 1.字符串模板工具类,直接看代码StringTemplateUtil. span style="font-size:12px;"package com.ilucky.util.template;i

在实际项目中我们经常要使用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字符串为: rn" + 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>

IluckySi
2014/07/18 20:51:34.597
127.0.0.1
11-22-33-44-55-66
*/

</span>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读