Java读取Xml文件 【视频】
有四种方法:DOM、SAX、DOM4J、JDOM
DOM读取:
1、准备阶段:
DocumentBuilderFactory>>>DocumentBulder>>>Document>加载xml文件
2、获取并遍历节点
(1)通过document对象的getElementByTagName()方法获取节点集合NodeList【即几本书的集合】;
循环遍历,通过NodeList的item(index)方法获取每个节点Node【每本书】;
通过Node的getAttributes()方法获取节点的属性集合NamedNodeMap【书的属性集合:id】
循环遍历,通过NamedNodeMapd的item(index)方法获取每个属性节点Node【id】
通过Node的getNodeName()和getNodeValue()方法获取属性值【例如:id--1】
2(2)在已知book节点只有一个id属性时,可用以下方法。
3、获取并遍历子节点
通过Node的getChildNodes()方法获取到子节点集合NodeList【书名/作者/日期等】
循环遍历,NodeList的item(index)方法可分别获取到每一个Node,然后通过getNodeName(),getNodeValue()方法可获取到该子节点的节点名和节点值。
此处注意:
常用的节点类型有Element、Attr、Text三种类型。
当使用getLength()方法时,解析器会把Xml文件中的空格以及换行符当做一个Text节点记入length。
如果直接使用getNodeValue()方法,若节点为Element类型(例如:<author>金庸</author>),则返回值为null。因此先通过getFirstChild()方法获取到Text节点(金庸),才能通过getNodeValue()方法获取节点值。
通过getTextContent()方法可以获取到节点中的Text文字。
【当节点中既有Element节点又有Text节点时:(例如:<author><a>aa</a>金庸</author>)
getTextContent():获取到所有文本信息.(aa金庸)
getFirstChild().getNodeValue:获取到第一个子节点的文本信息.(aa)】