您好,欢迎访问一九零五行业门户网

详解dom4j操作带冒号的xml示例代码

这几天被同事问道是否可以用dom4j来操作代用命名空间的xml(类似:afd1b592eb54a8152da01b4e485c98b0这种标签)
由于没有研究过,同事决定使用java自带的api来编写。
今天有时间变查了一下资料,后来发现dom4j完全可以胜任这项工作。网上有很多代码,看来看去云里雾里的。后来看到一个网友写到(直接用冒号后边的标签就能取到),试了一下,果真可以。
        下面写了一个测试例子,有xml的读写操作。有兴趣的朋友可以参考,代码比较简单,就不过多的介绍。
import java.io.file; import java.io.filewriter; import java.io.ioexception; import java.util.list; import org.dom4j.document; import org.dom4j.documentexception; import org.dom4j.documenthelper; import org.dom4j.element; import org.dom4j.namespace; import org.dom4j.io.saxreader; import org.dom4j.io.xmlwriter; import org.junit.test; public class testoperxml { //@test public void testofreader(){ string filename = "d:\\tb_user1.xml"; saxreader reader = new saxreader(); try { document doc = reader.read(new file(filename)); element root = doc.getrootelement(); element content = root.element("xmi.content"); println(content.getname()); element catalog = content.element("catalog"); println(catalog.getname()); namespace np = catalog.getnamespace(); println(catalog.getnamespace().getprefix()); println("xmi.id:"+catalog.attribute("xmi.id").gettext()); println("name:"+catalog.attribute("name").gettext()); println("visibility:" + catalog.attribute("visibility").gettext()); } catch (documentexception e) { e.printstacktrace(); } } //@test public void testofwriter(){ document doc = documenthelper.createdocument(); element root = doc.addelement("xmi"); root.addnamespace("cwm", "org.omg.cwm1.0").addnamespace("cwmrdb", "org.omg.cwm1.0/relational") .addnamespace("cwmolap", "org.omg.cwm1.0/olap").addnamespace("cwmtfm", "org.omg.cwm1.0/transformation") .addattribute("xmi.version", "1.1").addattribute("timestamp", "5月 23 2016 13:10:03"); element xmlheader = root.addelement("xmi.header"); element documentation = xmlheader.addelement("xmi.documentation"); documentation.addelement("xmi.exporter").settext("meta integration model bridge"); documentation.addelement("xmi.exporterversion").settext("6.0.3 - jan 28 2009 18:35:56"); xmlheader.addelement("metamodel").addattribute("xmi.name", "cwm").addattribute("xmi.version", "1.0"); element content = root.addelement("xmi.content"); element catalog = content.addelement("cwmrdb:catalog").addattribute("xmi.id", "_4").addattribute("name", "model_1") .addattribute("visibility", "public"); catalog.addnamespace("cwmrdb", "org.omg.cwm1.0/relational"); element schema = catalog.addelement("cwm:namespace.ownedelement").addnamespace("cwm", "org.omg.cwm1.0").addelement("schema"); schema.addnamespace("cwmrdb", "org.omg.cwm1.0/relational"); schema.addelement("cwm:namespace.ownedelement").addnamespace("cwm", "org.omg.cwm1.0"); try { xmlwriter writer = new xmlwriter(new filewriter("out.xml")); writer.write(doc); writer.close(); } catch (ioexception e) { e.printstacktrace(); } } @test public void testofxpath(){ string filename = "d:\\tb_user1.xml"; saxreader reader = new saxreader(); try { document doc = reader.read(new file(filename)); list list = doc.selectnodes("//xmi/xmi.content/cwmrdb:catalog"); for(object o : list){ element ele = (element)o; println(ele.getname()); list list1 = ele.selectnodes("//cwmrdb:catalog"); println(list1); } }catch(exception e){ e.printstacktrace(); } } private void println(object o){ if(o == null){ system.out.println(":>> null "); }else{ system.out.println(":>> "+o.tostring()); } } }
xml代码:
<?xml version="1.0" encoding="utf-8"?> <xmi xmlns:cwm="org.omg.cwm1.0" xmlns:cwmrdb="org.omg.cwm1.0/relational" xmlns:cwmolap="org.omg.cwm1.0/olap" xmlns:cwmtfm="org.omg.cwm1.0/transformation" xmi.version="1.1" timestamp="5月 23 2016 13:10:03"> <xmi.header> <xmi.documentation> <xmi.exporter>meta integration model bridge</xmi.exporter> <xmi.exporterversion>6.0.3 - jan 28 2009 18:35:56</xmi.exporterversion> </xmi.documentation> <xmi.metamodel xmi.name="cwm" xmi.version="1.0"/> </xmi.header> <xmi.content> <cwmrdb:catalog xmi.id="_4" name="model_1" visibility="public"> <cwm:namespace.ownedelement> <cwmrdb:schema xmi.id="_5" name="unnamed_5" visibility="public" namespace="_4"> <cwm:namespace.ownedelement></cwm:namespace.ownedelement> </cwmrdb:schema> </cwm:namespace.ownedelement> </cwmrdb:catalog> <cwm:catalog></cwm:catalog> </xmi.content> </xmi>
以上就是详解dom4j操作带冒号的xml示例代码的详细内容。
其它类似信息

推荐信息