加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

解析xml流

发布时间:2020-12-15 23:48:24 所属栏目:百科 来源:网络整理
导读:Xml格式数据通过http协议传入,这边接收请求、解析、调用、传出。 在一个Servlet中来对传入的xml流进行操作: Java代码 /** *重载方法 *@paramrequestrequest *@paramresponseresponse */ public void doPost(HttpServletRequestrequest,HttpServletResponse
Xml格式数据通过http协议传入,这边接收请求、解析、调用、传出。

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

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

我们根据请求中携带的xml输入流来获取xml数据的一个Document(即头结点),再解析xml来获取每个节点的值,然后把值放入相应的实体类(即Student类)中。
下面是我们对此操作所需要的一些类和方法。
学生信息的实体类:
Java代码
  1. publicclassStudent
  2. {
  3. privateStringname;
  4. privateintage;
  5. privateStringcountry;
  6. publicStringgetName()
  7. {
  8. returnname;
  9. }
  10. publicvoidsetName(Stringname)
  11. {
  12. this.name=name;
  13. }
  14. publicintgetAge()
  15. {
  16. returnage;
  17. }
  18. publicvoidsetAge(intage)
  19. {
  20. this.age=age;
  21. }
  22. publicStringgetCountry()
  23. {
  24. returncountry;
  25. }
  26. publicvoidsetCountry(Stringcountry)
  27. {
  28. this.country=country;
  29. }
  30. }

学生信息的xml文件:
Xml代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <student>
  3. <name>Tom</name>
  4. <age>25</age>
  5. <country>China</country>
  6. </student>

通过输入源构造一个Document:
Java代码
  1. publicstaticDocumentbuildDucument(InputStreaminputStream)
  2. {
  3. InputSourcesource;
  4. //创建一个新的SAXBuilder
  5. SAXBuilderbuilder=newSAXBuilder();
  6. try
  7. {
  8. source=newInputSource(inputStream);
  9. //通过输入源构造一个Document
  10. returnbuilder.build(source);
  11. }
  12. catch(Exceptione)
  13. {
  14. e.getMessage();
  15. }
  16. returnnull;
  17. }

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

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

  • 模拟请求.rar (831 Bytes)
  • 下载次数: 6

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读