JDOM与DOM的相互转换

xiaoxiao2021-03-01  94

一、DOM2JDOM采用如下方法,不过,这里只能是Document之间的转换:

public static org.jdom.Documentconvert(org.w3c.dom.DocumentdomDoc)throwsJDOMException,IOException ... {//CreatenewDOMBuilder,usingdefaultparserDOMBuilderbuilder=newDOMBuilder();org.jdom.DocumentjdomDoc=builder.build(domDoc);returnjdomDoc;}

二、JDOM2DOM,分别采用如下方法:1、Document之间的转换:

public static org.w3c.dom.DocumentJDomDoc2Dom(org.jdom.DocumentjdomDoc) throws Exception ... {DOMOutputteroutputter=newDOMOutputter();returnoutputter.output(jdomDoc);}

2、Element之间的转换,采用如下两个方法,演示的是将一个jdom的Element转换成w3c的Element,并将其附加到指定的W3C的Document下:

/***/ /***将由JDOM返回的如下结果ELEMENT:*<Response>*<Data>*<Record>*<id/>*</name>*</Record>*</Data>*</Response>*转换到由w3c的Document中*@paramdocw3c的Document*@paramelementJDom的Element*@return由JDom返回结果Element转换到w3cDocumentElement并附加到其指定的路径*@throwsDOMException*@throwsException*/ public static Documentconvert(org.w3c.dom.Documentdoc,org.jdom.Elementelement) throws DOMException,Exception ... {org.w3c.dom.Elementroot=null,response=null;intlayer=1;root=doc.getDocumentElement();response=convertElement2Dom(doc,element,layer);//System.out.println("convertElement2Dom结果:"+XmlUtil._node2String(response));root.getElementsByTagName("data").item(0).appendChild((Node)response);returndoc;} /***/ /***将JDom的Element转换成org.w3c.dom.Element*@paramdocorg.w3c.dom.Document*@paramelementorg.jdom.Element*@paramlayer用于判断是否第一层,第一层不用其自身的名称创建结点,用Response代替,只起判断做用*@returnorg.w3c.dom.Element*@throwsDOMException*@throwsException*/ private static org.w3c.dom.ElementconvertElement2Dom(org.w3c.dom.Documentdoc,org.jdom.Elementelement, int layer) throws DOMException,Exception ... {org.w3c.dom.Elementelement3c=null;if(layer==1)...{element3c=doc.createElement("Response");}else...{element3c=doc.createElement(element.getName());}layer++;ListlistChildren=element.getChildren();Stringelename="";Stringelevalue="";if(listChildren.size()>0)...{//有下级节点ListlistElement=element.getContent();for(inti=0;i<listElement.size();i++)...{org.jdom.ElementtmpElement=(org.jdom.Element)listElement.get(i);element3c.appendChild(convertElement2Dom(doc,tmpElement,layer));}}else...{//无下级节点elename=element.getName();//名称elevalue=element.getText();//element3c=doc.createElement(elename);BNXmlUtil.setNodeValue(element3c,elevalue);//给结点赋值(BNXmlUtil为普元EOS类,可换其它设值)ListeleAttr=element.getAttributes();for(inti=0;i<eleAttr.size();i++)...{//增加赋性值Attributeattr=(Attribute)eleAttr.get(i);StringattrName=attr.getName();StringattrValue=attr.getValue();element3c.setAttribute(attrName,attrValue);}//System.out.println("名称:"+elename+"-值:"+elevalue);}returnelement3c;}

参考:http://www.ibm.com/developerworks/java/library/x-tipcdm.html (Converting from DOM)http://www.ibm.com/developerworks/xml/library/x-tipcjdm.html (Converting from JDOM)

相关资源:matlab编写完成的Topsis评价程序源代码
转载请注明原文地址: https://www.6miu.com/read-3200084.html

最新回复(0)