Xml格式数据通过http协议传入,这边接收请求、解析、调用、传出。
在一个Servlet中来对传入的xml流进行操作:
我们根据请求中携带的xml输入流来获取xml数据的一个Document(即头结点),再解析xml来获取每个节点的值,然后把值放入相应的实体类(即Student类)中。
下面是我们对此操作所需要的一些类和方法。
学生信息的实体类:
学生信息的xml文件:
通过输入源构造一个Document:
上述方法是根据传入的xml输入流来构造出一个Document,以备解析之用。
那该如何来构造一个请求,其中携带着xml数据呢?
我们可以用Perl语言来写一个脚本,来模拟这个请求。如附件
在一个Servlet中来对传入的xml流进行操作:
/**
* 重载方法
* @param request request
* @param response response
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
Document doc = buildDucument(request.getInputStream());
String name = doc.getRootElement().getChildText("name");
String age = doc.getRootElement().getChildText("age");
String country = doc.getRootElement().getChildText("country");
Student student = new Student();
student.setName();
student.setAge();
student.setCountry();
}
我们根据请求中携带的xml输入流来获取xml数据的一个Document(即头结点),再解析xml来获取每个节点的值,然后把值放入相应的实体类(即Student类)中。
下面是我们对此操作所需要的一些类和方法。
学生信息的实体类:
public class Student
{
private String name;
private int age;
private String country;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public String getCountry()
{
return country;
}
public void setCountry(String country)
{
this.country = country;
}
}
学生信息的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<student>
<name>Tom</name>
<age>25</age>
<country>China</country>
</student>
通过输入源构造一个Document:
public static Document buildDucument(InputStream inputStream)
{
InputSource source;
// 创建一个新的SAXBuilder
SAXBuilder builder = new SAXBuilder();
try
{
source = new InputSource(inputStream);
// 通过输入源构造一个Document
return builder.build(source);
}
catch (Exception e)
{
e.getMessage();
}
return null;
}
上述方法是根据传入的xml输入流来构造出一个Document,以备解析之用。
那该如何来构造一个请求,其中携带着xml数据呢?
我们可以用Perl语言来写一个脚本,来模拟这个请求。如附件