解析xml流

前端之家收集整理的这篇文章主要介绍了解析xml流前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Xml格式数据通过http协议传入,这边接收请求、解析、调用、传出。

在一个Servlet中来对传入的xml流进行操作:

Java代码
  1. @H_403_12@/**
  2. @H_403_12@*重载方法
  3. @H_403_12@*@paramrequestrequest
  4. @H_403_12@*@paramresponseresponse
  5. @H_403_12@*/@H_403_12@
  6. @H_403_12@public@H_403_12@void@H_403_12@doPost(HttpServletRequestrequest,HttpServletResponseresponse)
  7. @H_403_12@throws@H_403_12@ServletException,IOException
  8. @H_403_12@{
  9. @H_403_12@Documentdoc=buildDucument(request.getInputStream());
  10. @H_403_12@Stringname=doc.getRootElement().getChildText("name"@H_403_12@);
  11. @H_403_12@Stringage=doc.getRootElement().getChildText("age"@H_403_12@);
  12. @H_403_12@Stringcountry=doc.getRootElement().getChildText("country"@H_403_12@);
  13. @H_403_12@Studentstudent=new@H_403_12@Student();
  14. @H_403_12@student.setName();
  15. @H_403_12@student.setAge();
  16. @H_403_12@student.setCountry();
  17. @H_403_12@}

我们根据请求中携带的xml输入流来获取xml数据的一个Document(即头结点),再解析xml来获取每个节点的值,然后把值放入相应的实体类(即Student类)中。
下面是我们对此操作所需要的一些类和方法
学生信息的实体类:
Java代码
  1. @H_403_12@public@H_403_12@class@H_403_12@Student
  2. @H_403_12@{
  3. @H_403_12@private@H_403_12@Stringname;
  4. @H_403_12@
  5. @H_403_12@private@H_403_12@int@H_403_12@age;
  6. @H_403_12@
  7. @H_403_12@private@H_403_12@Stringcountry;
  8. @H_403_12@
  9. @H_403_12@public@H_403_12@StringgetName()
  10. @H_403_12@{
  11. @H_403_12@return@H_403_12@name;
  12. @H_403_12@}
  13. @H_403_12@
  14. @H_403_12@public@H_403_12@void@H_403_12@setName(Stringname)
  15. @H_403_12@{
  16. @H_403_12@this@H_403_12@.name=name;
  17. @H_403_12@}
  18. @H_403_12@
  19. @H_403_12@public@H_403_12@int@H_403_12@getAge()
  20. @H_403_12@{
  21. @H_403_12@return@H_403_12@age;
  22. @H_403_12@}
  23. @H_403_12@
  24. @H_403_12@public@H_403_12@void@H_403_12@setAge(int@H_403_12@age)
  25. @H_403_12@{
  26. @H_403_12@this@H_403_12@.age=age;
  27. @H_403_12@}
  28. @H_403_12@
  29. @H_403_12@public@H_403_12@StringgetCountry()
  30. @H_403_12@{
  31. @H_403_12@return@H_403_12@country;
  32. @H_403_12@}
  33. @H_403_12@
  34. @H_403_12@public@H_403_12@void@H_403_12@setCountry(Stringcountry)
  35. @H_403_12@{
  36. @H_403_12@this@H_403_12@.country=country;
  37. @H_403_12@}
  38. @H_403_12@}

学生信息的xml文件
  1. @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@
  2. @H_403_12@<student>@H_403_12@
  3. @H_403_12@<name>@H_403_12@Tom</name>@H_403_12@
  4. @H_403_12@<age>@H_403_12@25</age>@H_403_12@
  5. @H_403_12@<country>@H_403_12@China</country>@H_403_12@
  6. @H_403_12@</student>@H_403_12@

通过输入源构造一个Document:
Java代码
  1. @H_403_12@public@H_403_12@static@H_403_12@DocumentbuildDucument(InputStreaminputStream)
  2. @H_403_12@{
  3. @H_403_12@InputSourcesource;
  4. @H_403_12@//创建一个新的SAXBuilder @H_403_12@
  5. @H_403_12@SAXBuilderbuilder=new@H_403_12@SAXBuilder();
  6. @H_403_12@try@H_403_12@
  7. @H_403_12@{
  8. @H_403_12@source=new@H_403_12@InputSource(inputStream);
  9. @H_403_12@//通过输入源构造一个Document @H_403_12@
  10. @H_403_12@return@H_403_12@builder.build(source);
  11. @H_403_12@}
  12. @H_403_12@catch@H_403_12@(Exceptione)
  13. @H_403_12@{
  14. @H_403_12@e.getMessage();
  15. @H_403_12@}
  16. @H_403_12@return@H_403_12@null@H_403_12@;
  17. @H_403_12@}

上述方法是根据传入的xml输入流来构造出一个Document,以备解析之用。

那该如何来构造一个请求,其中携带着xml数据呢?
我们可以用Perl语言来写一个脚本,来模拟这个请求。如附件

猜你在找的XML相关文章