一、修改
XML源文件如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<PhoneInfo>
<Brand name="华为">
<Type name="123"/>
<Type name="456"/>
<Type name="789"/>
</Brand>
<Brand name="iphone">
<Type name="iphone6"/>
<Type name="iphone7"/>
<Type name="iphone4"/>
</Brand>
<Brand name="香蕉">
<Type name="A1680"/>
</Brand>
</PhoneInfo>
视频中的示例
要求:在每个Brand标签中再加一个id属性。
具体实现思路如下:先拿出每一个Brand节点,然后通过setAttribute()方法设置一个新的属性。具体代码如下:
// 修改元素
public void updateEle() {
// 获取所有的Brand
NodeList brands = document.getElementsByTagName("Brand");
for (int i = 0; i < brands.getLength(); i++) {
Node brand = brands.item(i);
Element brandEle = (Element)brand;
brandEle.setAttribute("id", i + "");
saveXML();
}
}
修改后的XML文件如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<PhoneInfo>
<Brand id="0" name="华为">
<Type name="123"/>
<Type name="456"/>
<Type name="789"/>
</Brand>
<Brand id="1" name="iphone">
<Type name="iphone6"/>
<Type name="iphone7"/>
<Type name="iphone4"/>
</Brand>
<Brand id="2" name="香蕉">
<Type name="A1680"/>
</Brand>
</PhoneInfo>
书中的实例
要求:将XML文档中的手机品牌信息“iphone”修改为“苹果”。
实现思路:
1、为XML文档构造DOM树。
2、找到符合修改条件的节点。
3、设置该节点的属性为修改值。
4、保存XML文档。
具体代码如下:
// 修改元素:将“iphone”修改为“苹果”
public void change() {
NodeList brands = document.getElementsByTagName("Brand");
for (int i = 0; i < brands.getLength(); i++) {
Node brand = brands.item(i);
Element brandEle = (Element)brand;
String brandName = brandEle.getAttribute("name");
if (brandName.equals("iphone")) {
brandEle.setAttribute("name", "苹果");
}
}
saveXML();
}
运行后的XML文件为:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<PhoneInfo>
<Brand id="0" name="华为">
<Type name="123"/>
<Type name="456"/>
<Type name="789"/>
</Brand>
<Brand id="1" name="苹果">
<Type name="iphone6"/>
<Type name="iphone7"/>
<Type name="iphone4"/>
</Brand>
<Brand id="2" name="香蕉">
<Type name="A1680"/>
</Brand>
</PhoneInfo>
二、删除
删除前的XML源文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<PhoneInfo>
<Brand id="0" name="华为">
<Type name="123"/>
<Type name="456"/>
<Type name="789"/>
</Brand>
<Brand id="1" name="苹果">
<Type name="iphone6"/>
<Type name="iphone7"/>
<Type name="iphone4"/>
</Brand>
<Brand id="2" name="香蕉">
<Type name="A1680"/>
</Brand>
</PhoneInfo>
视频示例
要求:删除手机品牌为华为的那个节点。
思路;把所有的Brand节点拿出来,找到name属性为“华为”的节点,得到这个节点的父节点,通过其父节点删掉这个节点。
具体代码如下:
// 删除华为手机
public void deleteEle() {
NodeList brands = document.getElementsByTagName("Brand");
for (int i = 0; i < brands.getLength(); i++) {
Node brand = brands.item(i);
Element brandEle = (Element)brand;
String brandName = brandEle.getAttribute("name");
if (brandName.equals("华为")) {
brandEle.getParentNode().removeChild(brandEle);
}
}
saveXML();
}
主要是删除的方法:brandEle.getParentNode().removeChild(brandEle);
,先拿到当前节点的父节点,通过父节点去删除这个节点。这个节点自己本身是没有权利来删除自己的。
运行之后的XML文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<PhoneInfo>
<Brand id="1" name="苹果">
<Type name="iphone6"/>
<Type name="iphone7"/>
<Type name="iphone4"/>
</Brand>
<Brand id="2" name="香蕉">
<Type name="A1680"/>
</Brand>
</PhoneInfo>
到此为止,DOM增删改查已全部学习完毕。