首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

xml解析节点时,值全为null,谁帮下忙

2012-03-25 
xml解析节点时,值全为null,哪位高手帮下忙,在线等如题:xml文件内容如下:--------------------------------

xml解析节点时,值全为null,哪位高手帮下忙,在线等
如题:
 xml文件内容如下:
-------------------------------------------------

XML code
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE pets[<!ELEMENT pets (dog,penguin)><!ELEMENT dog (love,health,rehealth,addlove)><!ELEMENT penguin (love,health,rehealth,addlove)>]><pets>    <dog>        <love>0</love>        <health>100</health>        <rehealth>5</rehealth>        <addlove>10</addlove>    </dog>    <penguin>        <love>0</love>        <health>100</health>        <rehealth>10</rehealth>        <addlove>15</addlove>    </penguin></pets>


---------------------------------------------

解析代码如下:
Java code
package cn.jbit.Test;import java.io.IOException;import javax.xml.parsers.*;import org.w3c.dom.*;import org.xml.sax.SAXException;public class Test {    /**     * @param args     */    public static void main(String[] args) {                DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();                try {            DocumentBuilder db=dbf.newDocumentBuilder();            Document doc=db.parse("PetInfo.xml");            //获取根节点            Node pets=doc.getDocumentElement();            //获取根节点下的所有子节点            NodeList dogAndpenguin=pets.getChildNodes();            //开始遍历            for(int i=0;i<dogAndpenguin.getLength();i++){                                if(dogAndpenguin.item(i).getNodeType()==Node.ELEMENT_NODE){                    System.out.println(dogAndpenguin.item(i).getNodeName());                                        NodeList infos=dogAndpenguin.item(i).getChildNodes();                                        for(int j=0;j<infos.getLength();j++){                        if(infos.item(j).getNodeType()==Node.ELEMENT_NODE)                            System.out.println(infos.item(j).getNodeName());                            System.out.println(infos.item(j).getNodeValue());                    }                                    }                            }                                } catch (ParserConfigurationException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (SAXException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }            }}


------------------------------------
结果为:
dog


love
null


health
null


rehealth
null


addlove
null


penguin


love
null


health
null


rehealth
null


addlove
null

------------------------
我确实不知道哪里出错了,解析的节点都正确,但解析节点的值却全是空的,高手们帮下忙!

[解决办法]
if(infos.item(j).getNodeType()==Node.ELEMENT_NODE) {
System.out.println(infos.item(j).getNodeName());
System.out.println(infos.item(j).getTextContent());
}
要获取<health>100</health>中间的内容的值要用getTextContext(),
100其实也是一个节点是一个text类型的节点,它是health的子节点,并不是health的值

热点排行