首先理解XML的含义:
W3CSchool的解释是:
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
具体可参阅w3shcool官方网站文档http://w3school.com.cn/index.html
具体可参阅w3c官方网站文档http://www.w3.org获取更多信息。
以以下的xml文件为例:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="1" name="徐杰">
<name>冰与火之歌</name>
<author>乔治马丁</author>
<year>2014</year>
<price>89</price>
</book>
<book id="2">
<name>安徒生童话</name>
<year>2004</year>
<price>77</price>
<language>English</language>
</book>
</bookstore>
DOM方法:
准备工作:
创建一个documentBuilder工厂类,用domumentBuilder类获得:
DocumentBuilder db=dbf.newDocumentBuilder();
创建一个document对象并用parse方法加载books.xml
Document document=db.parse("books.xml");
现在可以开始写具体的代码了:
//用NodeList获取books的属性名称
NodeList bookList=document.getElementsByTagName("book");
//输出book的属性数字
System.out.println("book的总共属性个数是:"+bookList.getLength());
for(int i=0;i<bookList.getLength();i++){
System.out.println("===========开始第"+(i+1)+"次循环============");
//当不知道xml中属性的个数与属性的名字时用该方法
Node book=bookList.item(i);
NamedNodeMap arrs=book.getAttributes();
System.out.println("第"+(i+1)+"本书共有 "+arrs.getLength()+"个属性值");
for(int j=0;j<arrs.getLength();j++){
Node arr=arrs.item(j);
System.out.print("属性名:"+arr.getNodeName());
System.out.println("--属性值:"+arr.getNodeValue());
}
//方法前提:已经知道book节点有且只有一个属性值
Element book=(Element) bookList.item(i);//强制类型转换时因为 element有个getAttribute方法
String attrValue=book.getAttribute("id");
System.out.println("id属性值为"+attrValue);
Nod