您的位置:

java遍历读取xml文件内容(java读写xml文件)

本文目录一览:

JAVA 读取XML文件

import java.util.List;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

public class XmlTester {

    public static void main(String[] args) throws DocumentException {

        // 使用了dom4j解析xml

        // 读取目录下用来测试的test.xml文件,取得xml主内容

        Document document = new SAXReader().read("src/abc/test.xml").getDocument();

        int i = 1;

        // 遍历文档根节点(wuxialist)下的子节点列表,即txtbook节点的集合

        for(Element txtbook : (ListElement)document.getRootElement().elements()){

            //取得txtbook节点下的name节点的内容

            System.out.println(i+"."+txtbook.element("name").getText());

            i++; //原来这里少些了这一行,先补上

        }

    }

}

Java xml遍历

你没说清楚运行是到底会发生什么错误,因为解析XML这玩意和XML本身的格式有关,你应该把XML也给出。我只能假设你的XML是这种形式:

?xml version="1.0" encoding="UTF-8" ?

root

    filems name="a1" Englishname="a2" direct="a3" actor="a4" type="a5"

        price="a6" time="a7" /

    filems name="b1" Englishname="b2" direct="b3" actor="b4" type="b5"

        price="b6" time="b7" /

/root

这样运行你的代码会报NulPointerExceptoin,应该把Element e = (Element)  list.item(i).getChildNodes().item(i);

去掉,你的代码需要改成这样子:

import java.util.ArrayList;

import java.util.List;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NodeList;

public class Filem {

    public static void main(final String[] args) throws Exception {

        show();

    }

    public static void show() throws Exception {

        final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

        final DocumentBuilder db = dbf.newDocumentBuilder();

        final Document doc = db.parse("FilemMessage.xml");

        final NodeList list = doc.getElementsByTagName("filems");

        final List l = new ArrayList();

        final int length = list.getLength();

        for (int i = 0; i  length; i++) {

            final Element e = (Element) list.item(i);

            if (e == null) {

                break;

            }

            final String name = e.getAttribute("name");

            final String Englishname = e.getAttribute("Englishname");

            final String direct = e.getAttribute("direct");

            final String actor = e.getAttribute("actor");

            final String type = e.getAttribute("type");

            final String price = e.getAttribute("price");

            final String time = e.getAttribute("time");

            l.add(name);

            l.add(Englishname);

            l.add(direct);

            l.add(actor);

            l.add(type);

            l.add(price);

            l.add(time);

        }

        for (int j = 0; j  l.size(); j++) {

            System.out.println(l.get(j));

        }

    }

}

java读取xml文件内容

java中不是有个读取xml文件的类吗?之间调用那类读取出来,然后用取节点的方法去取对应节点的里的值。等下给你代码。

public class ReaderXml {

private static String filename = "E:\\workplace\\readerxml\\bin\\reader\\xml\\reader.xml";

// private static Config config;

public static void main(String []args) throws Exception{

//这里用反射机制

DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();

DocumentBuilder dombuilder=domfac.newDocumentBuilder();

//读取文件流

InputStream is=new FileInputStream(filename);

Document doc=dombuilder.parse(is);

Element root=doc.getDocumentElement();

//获取所有xml节点

NodeList dbinfo=root.getChildNodes();

if(dbinfo!=null){

for(int i=0;idbinfo.getLength();i++){

//获取节点判断

Node db=dbinfo.item(i);

//如果是Hardwares节点,也就是你xml文件的最顶处的节点

if(db.getNodeName().equals("Hardwares")){

//获取第二个节点包含的所有节点

NodeList list=db.getChildNodes();

for(int y=0;ylist.getLength();y++){

Node n=list.item(y);

//如果节点等于Hardware

if(n.getNodeName().equals("Hardware")){

//获取Hardware节点中的所有节点

NodeList CnodeList=n.getChildNodes();

//取出Hardware里面的所有节点

for(int k=0;kCnodeList.getLength();k++){

//取出节点

Node cn=CnodeList.item(k);

//去掉里面的#text文件节点。没用,这个不是你配置的节点,应该是xml文件隐藏的

if(!cn.getNodeName().equals("#text")){

//打印你所配置的所有节点 System.out.println("node["+k+"]="+cn.getNodeName()+" nodeValue["+k+"]="+cn.getTextContent());

}

}

}

}

}

}

}

}

}

//具体你要干嘛自己弄了!