解析xml流

前端之家收集整理的这篇文章主要介绍了解析xml流前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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文件
  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语言来写一个脚本,来模拟这个请求。如附件

猜你在找的XML相关文章