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());

}

}

}

}

}

}

}

}

}

//具體你要幹嘛自己弄了!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/256455.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:41
下一篇 2024-12-15 12:41

相關推薦

發表回復

登錄後才能評論