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