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();
- }
/**
* 重载方法
* @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;
- }
- }
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>
<?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;
- }
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语言来写一个脚本,来模拟这个请求。如附件