package csdn.xml.dom;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Text;
import java.io.File;
public class MyDomTest {
public static void main(String[] args) throws Exception {
//获得工厂对象
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
//获得解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//进行解析,获得Document对象
Document doc = builder.parse(new File("src/book.xml"));
//顺序访问节点的方式找到书架节点
//NodeList nodeList = doc.getChildNodes().item(0).getChildNodes();
//System.out.println("书架的子节点数量:"+nodeList.getLength());
//随机访问已知元素名称的指定节点
//NodeList nodeList = doc.getElementsByTagName("书架");
//Node node = nodeList.item(0);
//listAllNodes(node);
//插入新节点
//createNode(doc);
//在指定位置前插入新节点
insertFixedNode(doc);
}
//对指定的节点进行遍历
public static void listAllNodes(Node node){
System.out.println("节点名:"+node.getNodeName()
+ " 节点值: "+node.getNodeValue());
if(node.getNodeType() == Node.ELEMENT_NODE){
//遍历当前元素节点的属性
if(node.hasAttributes()){
NamedNodeMap attrs = node.getAttributes();
for(int i=0; i<attrs.getLength(); i++){
Node attrNode = attrs.item(i);
System.out.println(attrNode.getNodeName() +
" : "+attrNode.getNodeValue());
}
}
//遍历当前元素节点的子结点,利用递归实现
if(node.hasChildNodes()){
NodeList nodeList = node.getChildNodes();
for(int i=0; i<nodeList.getLength(); i++){
Node childNode = nodeList.item(i);
listAllNodes(childNode); //递归
}
}
}
}
public static void createNode(Document doc) throws TransformerException{
Node node = doc.getElementsByTagName("书").item(1);
Element element = doc.createElement("出版社");
element.setTextContent("西安交大出版社");
node.appendChild(element);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.transform(new DOMSource(doc), new StreamResult(new File("src/book.xml")));
}
public static void insertFixedNode(Document doc) throws Exception{
Node secBookNode = doc.getElementsByTagName("书").item(1);
Node priceNode = secBookNode.getChildNodes().item(4);
Element isbnElement = doc.createElement("ISBN");
Text isbnText = doc.createTextNode("123-345-333");
isbnElement.appendChild(isbnText);
//secBookNode.appendChild(isbnElement); //追加为secBookNode最后一个子结点
//插入到售价节点之前
secBookNode.insertBefore(isbnElement, priceNode);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.transform(new DOMSource(doc), new StreamResult(new File("src/book.xml")));
}
}
分享到:
相关推荐
本文实例讲述了JavaScript遍历DOM元素的常见方式。分享给大家供大家参考,具体如下: 对于元素之间的空格,IE9以及之前的版本不会返回文本节点,,其他的浏览器会返回文本节点,所以我们在使用firstChild,lastChild...
实例181 遍历枚举接口的元素 230 实例182 简单的文件合并工具 231 8.2 泛型使用的简介 233 实例183 自定义非泛型栈结构 233 实例184 使用泛型实现栈结构 234 实例185 自定义泛型化数组类 235 实例186 泛型方法与数据...
实例061 使用属性存储用户编号和姓名 99 实例062 使用索引器 101 实例063 通过类继承计算梯形面积 103 实例064 封装类实现一个简单的计算器 106 实例065 通过结构计算矩形的面积 107 实例066 通过结构计算圆形的面积...
实例061 使用属性存储用户编号和姓名 实例062 使用索引器 实例063 通过类继承计算梯形面积 实例064 封装类实现一个简单的计算器 实例065 通过结构计算矩形的面积 实例066 通过结构计算圆形的面积 实例067 使用面向...
选择器允许您对 DOM 元素组或单个 DOM 节点进行操作。 jQuery 元素选择器 jQuery 使用 CSS 选择器来选取 HTML 元素。 $("p") 选取 <p> 元素。 $("p.intro") 选取所有 class="intro" 的 <p> 元素。 $("p#demo") 选取 ...
boost读取XML文件 boost中提供了对配置文件读取的支持,它就是:property_tree。 basic_ptree 是property_tree的核心基础...self_type是basic_ptree模板实例化后自身的类型,它也是子节点的类型。value_type是节点的
3.2.1 元素属性操作/45 3.2.2 元素内容操作/49 3.2.3 获取或设置元素值/51 3.2.4 元素样式操作/53 3.3 创建节点元素/58 3.4 插入节点/60 3.4.1 内部插入节点方法/60 3.4.2 外部插入节点方法/64 3.5 复制...
12.5.1 打开每一个盒子--遍历节点 12.5.2 弄清层级关系--父子与兄弟 12.5.3 如何搜索特定节点 12.5.4 克隆节点--一个使用cloneNode()复制表格的例子 12.5.5 移动节点及其范例 12.5.6 关于添加...
2.1.1 实例变量和类变量的属性 2.1.2 实例变量的初始化时机 2.1.3 类变量的初始化时机 2.2 父类构造器 2.2.1 隐式调用和显式调用 2.2.2 访问子类对象的实例变量 2.2.3 调用被子类重写的方法 2.3 父子实例的...
Scrollimator实例提供回调以监视子元素相对于Scrollimator节点的位置以及滚动/遍历进度。 当用户滚动时,返回的进度值可用于补间动画。 特征 没有jQuery 支持IE8 +(未经测试)和现代浏览器 不受应用程序和DOM结构...