JDom如何嵌入第三方接口传入的XML数据

来源:互联网 发布:windows性能计数器缓存 编辑:程序博客网 时间:2024/05/18 11:29

我们在工作中会经常遇到这样的接口需求,我们本身组装了一个org.jdom.Document对象,然后把第三方接口传过来的XML数据嵌入到当前Document对象中,由于第三方接口受到不同的平台不同架构的限制,第三方接口返回的数据往往不会是Document对象或者Element对象,而更常见的是整个XML数据,这时我们就需要手动解析XML数据并嵌入到挡墙Document对象中,下面就JDom中嵌入传入的XML数据给出一个简单的例子:

    //我方的XML数据

     Document doc = new Document(File);

     Element root = new Element("root");

    doc.setRootElement(root);

    //第三方返回的XML数据

    String xml = getThirdInterfaceXML();

      StringReader sr = new StringReader(xml);
     Document thirdDoc= builder.build(sr);
     Element thirdRoot= thirdDoc.getRootElement();

      //由于root中的parent不为空,上层节点invoke addContent时如果被添加的element中的parent不为空,则抛出异常addNode失败,所    以此时应该清空parent
  Parent p = thirdRoot.getParent();
  p.removeContent(thirdRoot);

  必须编写以上两行代码,否则由于thirdDoc和thirdRoot之间存在父子关系,而我们调用addContent代码时,JDOM会判断parent如果不为空,则直接抛出异常org.jdom.IllegalAddException: The element "*******" could not be added as the root of the document: The Content already has an existing parent document

  最后调用代码

   root.addContent(thirdRoot);

  调用成功,验证通过

原创粉丝点击