zabbix------以自动添加tomcat端口的一条数据为例,了解low level discovery
2015-12-24 08:41
405 查看
/**
* 采用pull解析xml内容
* 建议平时使用pull 解析器解析xml 文档,容易理解
* @author Administrator
*
*/
/**
* 获取员工信息
* @param xmlInputStream
* @return
* @throws Exception
*/
public static List<Person> getPerson(InputStream xmlInputStream)throws Exception{
List<Person> persoList =null;
Person person =null;
parser.setInput(xmlInputStream,"UTF-8"); //设置,解析
setInput(xml,encoding);
int event = parser.getEventType(); //将会解析xml 文件第一段字符
//pull解析器不能主动的自我解析,需要手动调用next()解析方法,进行解析
while (event!= XmlPullParser.END_DOCUMENT) { //如果不是文档末尾,就一直进行解析(不是结束文档事件)
switch (event) {
case XmlPullParser.START_DOCUMENT: //开始文档事件
persoList = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG: //开始元素事件处理
if ("person".equals(parser.getName())) {
//get attribute
int id= new Integer(parser.getAttributeValue(0));
person =new Person();
person.setId(id);
}
if (person!=null) {
if ("name".equals(parser.getName())) {
//get attribute
person.setName(parser.nextText()); //获取开始节点下面的文本节点的值
}
if ("age".equals(parser.getName())) {
//get attribute
int age= new Integer(parser.nextText());
person.setAge(age);
}
}
break;
case XmlPullParser.END_TAG: //结束元素事件
if ("person".equals(parser.getName())) {
persoList.add(person);
person = null;
}
break;
}
event =parser.next(); //调用next方法,进行下一步
}
return persoList;
}
/**
* 生成xml
* @param list
* @param outputStream
* @throws Exception
*/
public static void save(List<Person> list,OutputStream outputStream)throws Exception{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlSerializer serializer = factory.newSerializer();//获取序列化对象
serializer.setOutput(outputStream,"utf-8"); //设置输出方向
serializer.startDocument("utf-8",true); //设置xml 文件的编码,和xml文件是否可以独立存在
serializer.startTag(null,"persons"); //设置开始标签(命名空间设置为null,persons)
for(Person person: list){
serializer.startTag(null,"person"); //kaishi 设置,开始生成person 节点
serializer.attribute(null,"id",person.getId()+""); //设置节点属性
//设置子节点
serializer.startTag(null,"name");
serializer.text(person.getName());
serializer.endTag(null,"name");
//设置子节点
serializer.startTag(null,"age");
serializer.text(person.getAge()+"");
serializer.endTag(null,"age");
serializer.endTag(null,"person");
}
serializer.endTag(null,"persons");//设置结束标签又开始就有结束嘛
serializer.endDocument(); //结束文档
}
* 采用pull解析xml内容
* 建议平时使用pull 解析器解析xml 文档,容易理解
* @author Administrator
*
*/
/**
* 获取员工信息
* @param xmlInputStream
* @return
* @throws Exception
*/
public static List<Person> getPerson(InputStream xmlInputStream)throws Exception{
List<Person> persoList =null;
Person person =null;
XmlPullParser parser= Xml.newPullParser();
parser.setInput(xmlInputStream,"UTF-8"); //设置,解析
setInput(xml,encoding);
int event = parser.getEventType(); //将会解析xml 文件第一段字符
//pull解析器不能主动的自我解析,需要手动调用next()解析方法,进行解析
while (event!= XmlPullParser.END_DOCUMENT) { //如果不是文档末尾,就一直进行解析(不是结束文档事件)
switch (event) {
case XmlPullParser.START_DOCUMENT: //开始文档事件
persoList = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG: //开始元素事件处理
if ("person".equals(parser.getName())) {
//get attribute
int id= new Integer(parser.getAttributeValue(0));
person =new Person();
person.setId(id);
}
if (person!=null) {
if ("name".equals(parser.getName())) {
//get attribute
person.setName(parser.nextText()); //获取开始节点下面的文本节点的值
}
if ("age".equals(parser.getName())) {
//get attribute
int age= new Integer(parser.nextText());
person.setAge(age);
}
}
break;
case XmlPullParser.END_TAG: //结束元素事件
if ("person".equals(parser.getName())) {
persoList.add(person);
person = null;
}
break;
}
event =parser.next(); //调用next方法,进行下一步
}
return persoList;
}
/**
* 生成xml
* @param list
* @param outputStream
* @throws Exception
*/
public static void save(List<Person> list,OutputStream outputStream)throws Exception{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlSerializer serializer = factory.newSerializer();//获取序列化对象
serializer.setOutput(outputStream,"utf-8"); //设置输出方向
serializer.startDocument("utf-8",true); //设置xml 文件的编码,和xml文件是否可以独立存在
serializer.startTag(null,"persons"); //设置开始标签(命名空间设置为null,persons)
for(Person person: list){
serializer.startTag(null,"person"); //kaishi 设置,开始生成person 节点
serializer.attribute(null,"id",person.getId()+""); //设置节点属性
//设置子节点
serializer.startTag(null,"name");
serializer.text(person.getName());
serializer.endTag(null,"name");
//设置子节点
serializer.startTag(null,"age");
serializer.text(person.getAge()+"");
serializer.endTag(null,"age");
serializer.endTag(null,"person");
}
serializer.endTag(null,"persons");//设置结束标签又开始就有结束嘛
serializer.endDocument(); //结束文档
}
相关文章推荐
- Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules (web项目不能加载到服务器))
- Tomcat下载压缩包解压后应有如下文件结构
- 【Linux】ubuntu下安装JDK、Tomcat
- tomcat中的server.xml和context.xml配置jndi区别
- Tomcat启动
- windows 下配置tomcat
- Apache和Tomcat整合
- TomCat服务器
- Tomcat的几种部署方式(转载)
- nginx + tomcat 导致session丢失的问题
- Maven集成Tomcat7开发(九)
- Linux下apache tomcat集群搭建
- tomcat下两个网站,后台新闻更新之后,前台页面不展示,tomcat报错-连接池错误c3p0
- (原)Linux下安装tomcat
- Tomcat 环境部署
- myeclipse2015不能启动tomcat,提示: Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at local
- 一台服务器下启多个Tomcat
- zabbix使用JMX监控tomcat性能
- nginx+tomcat负载均衡
- 规划 linux 下 apache nginx php mysql java tomcat jsp服务器