解析xml流

Xml格式数据通过http协议传入,这边接收请求、解析、调用、传出。

在一个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语言来写一个脚本,来模拟这个请求。如附件

你可能感兴趣的:(servlet,xml解析,输入流)