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

java Domj4读取xml文件

先概括,再以代码形式给出。
获取节点:
iterator  element.nodeiterator();  //获取当前标签节点下的所有子节点
获取 标签:
element document.getrootelement();  //获取xml文档的根标签
element  element.element(标签名) //指定名称的第一个子标签
iterator558dc77cf99fee6757323747f07fa144element.elementiterator(标签名);// 指定名称的所有子标签
list558dc77cf99fee6757323747f07fa144  element.elements(); //获取所有子标签
获取属性:
string   element.attributevalue(属性名) //获取指定名称的属性值
attribute   element.attribute(属性名);//获取指定名称的属性对象
attribute.getname()  //获取属性名称
attibute.getvalue()  //获取属性值
list50911cc176bc2bfcefb2e67861bd2b2f     element.attributes();  //获取所有属性对象.推荐使用方案。
iterator50911cc176bc2bfcefb2e67861bd2b2f      element.attibuteiterator(); //获取所有属性对象
获取文本:
element.gettext();  //获取当前标签的文本
element.elementtext(标签名)//获取当前标签的指定名称的子标签的文本内容
案例:
import java.io.file; import java.util.iterator; import java.util.list; import org.dom4j.attribute; import org.dom4j.document; import org.dom4j.element; import org.dom4j.node; import org.dom4j.io.saxreader; import org.junit.test; /** * 第二个dom4j读取xml文件内容 * 节点 * 标签 * 属性 * 文本 * @author apple * */ public class demo2 { /** * 得到节点信息 */ @test public void test1() throws exception{ //1.读取xml文档,返回document对象 saxreader reader = new saxreader(); document doc = reader.read(new file("./src/contact.xml")); //2.nodeiterator: 得到当前节点下的所有子节点对象(【不包含孙以下的节点】) iterator<node> it = doc.nodeiterator();//返回的是一个迭代器对象,迭代器里面存放的就是node,给出泛型为node while(it.hasnext()){//判断是否有下一个元素 node node = it.next();//取出元素 string name = node.getname();//得到节点名称 //system.out.println(name); //system.out.println(node.getclass()); //继续取出其下面的子节点 //只有【标签节点】才有子节点 //判断当前节点是否是标签节点 if(node instanceof element){ element elem = (element)node;//node是node类型的,因此要向下转型 iterator<node> it2 = elem.nodeiterator(); while(it2.hasnext()){ node n2 = it2.next(); system.out.println(n2.getname()); } } } } /** * 遍历xml文档的所有节点 * @throws exception */ @test public void test2() throws exception{ //1.读取xml文档,返回document对象 saxreader reader = new saxreader(); document doc = reader.read(new file("./src/contact.xml")); //得到根标签。contactlist element rooelem = doc.getrootelement(); getchildnodes(rooelem); } /** * 获取 传入的标签下的所有子节点。element elem只有element标签才有子节点 * @param elem */ private void getchildnodes(element elem){ system.out.println(elem.getname());//获取到了根标签的名称 //得到子节点 iterator<node> it = elem.nodeiterator(); while(it.hasnext()){ node node = it.next(); //1.判断是否是标签节点 if(node instanceof element){ element el = (element)node; //递归 getchildnodes(el); } }; } /** * 获取标签 */ @test public void test3() throws exception{ //1.读取xml文档,返回document对象 saxreader reader = new saxreader(); document doc = reader.read(new file("./src/contact.xml")); //2.得到根标签 element rootelem = doc.getrootelement(); //得到标签名称 string name = rootelem.getname(); system.out.println(name);//contactlist //3.得到当前标签下指定名称的【第一个】【子】标签 /*element contactelem = rootelem.element("contact"); system.out.println(contactelem.getname());*/ //4.得到当前标签下指定名称的所有子标签,指定了contact名称,就得到这个名称的所有同名的标签 //这里制定了名称,有局限性 /*iterator<element> it = rootelem.elementiterator("contact"); while(it.hasnext()){ element elem = it.next(); system.out.println(elem.getname()); }*/ //5.得到当前rootelem标签下的的所有子标签对象,这里会拿出所有子标签对象。推荐使用。 list<element> list = rootelem.elements(); //遍历list的方法 //1)传统for循环 2)增强for循环 3)迭代器 /*for(int i=0;i<list.size();i++){ element e = list.get(i); system.out.println(e.getname()); }*/ for(element e:list){ system.out.println(e.getname()); } /* iterator<element> it = list.iterator(); //ctrl+2 松开 l while(it.hasnext()){ element elem = it.next(); system.out.println(elem.getname()); }*/ //获取更深层次的标签(方法只能一层层地获取) element nameelem = doc.getrootelement(). element("contact").element("name"); system.out.println(nameelem.getname()); } /** * 获取属性 */ @test public void test4() throws exception{ //1.读取xml文档,返回document对象 saxreader reader = new saxreader(); document doc = reader.read(new file("./src/contact.xml")); //获取属性:(先获得属性所在的标签对象,然后才能获取属性) //1.得到标签对象 element contactelem = doc.getrootelement().element("contact"); //2.得到属性 //2.1 得到指定名称的属性值 /* string idvalue = contactelem.attributevalue("id"); system.out.println(idvalue); */ //2.2 得到指定属性名称的属性对象attribute /*attribute idattr = contactelem.attribute("id"); //getname: 属性名称 getvalue:属性值 system.out.println(idattr.getname() +"=" + idattr.getvalue());*/ //2.3 得到【所有】属性对象,返回list集合。不需要知道属性名称和多少个属性 /*list<attribute> list = contactelem.attributes();//推荐使用方案 //遍历属性 for (attribute attr : list) { system.out.println(attr.getname()+"="+attr.getvalue()); }*/ //2.4 得到【所有属性】对象,返回迭代器 iterator<attribute> it = contactelem.attributeiterator(); while(it.hasnext()){ attribute attr = it.next(); system.out.println(attr.getname()+"="+attr.getvalue()); } } /** * 获取文本 */ @test public void test5() throws exception{ //1.读取xml文档,返回document对象 saxreader reader = new saxreader(); document doc = reader.read(new file("./src/contact.xml")); /** * 注意: 空格和换行也是xml的内容 */ string content = doc.getrootelement().gettext(); system.out.println(content); //获取文本(先获取标签对象,再获取标签上的文本) element nameelem = doc.getrootelement().element("contact").element("name"); //1. 得到文本 string text = nameelem.gettext(); system.out.println(text); //2. 得到指定子标签名的文本内容 string text2 = doc.getrootelement().element("contact").elementtext("phone"); system.out.println(text2); } }
以上就是java domj4读取xml文件的内容。
其它类似信息

推荐信息