1.创建DocumentBuilderFactory对象,通过DocumentBuilder解析目标文件到Document对象中。
DocumentBuilderFactory fa = DocumentBuilderFactory.newInstance();
DocumentBuilder db = fa.newDocumentBuilder();
File f = new File(); //括号内填入目标文件的相对路径。
Document doc = db.parse(f); //通过解析器将文件f解析到内存中生产的Document树 doc 中。
Element root = doc.getDocumentElement(); //获取根节点。
NodeList nod = root.getElementByName(" "); //括号内是标签名,根据标签名获取子节点。
Element user = " ";
/**
*遍历root下标签为()的节点内容。
*/
for( int i = 0; i < nod.length; i++){
user = (Element)nod.item(i); //将nod转化为user的element类型。
System.out.println(user.getNodeName + user.getAttribute(); //获取节点的标签名称和指定的属性值。
//使用getChildNodes(),如果只是要获取当前节点下一级子节点,要保证当前节点只有一级子节点。
NodeList list = user.getChildNodes(); //获取当前节点下的子节点。
Element user1 = " ";
for( int a = 0; a < nod.length; a++){
user1 = (Element)list.item(a); //将获取的子节点列表转化为Element类型
System.out.println(user1.getNodeName + user1.getAttribute();
}
}
节点的增改
Element new = doc.creatElement(tagName:); //创建新标签为“ ”的新节点。
new.setAttribute( , ); //设置节点的属性值。
root.appendChild(new); //将新节点加入到根节点中去。
Element new1 = doc.createElement("userName"); //创建子节点下的子节点。
userName.setTextContent("测试用户"); //设置节点的内容。
new.appendChild(userName); //将节点加入到root下的子节点中。
注意:以上的节点增改均不会更改xml原文件,需要以下步骤:
//////////////////////////////////////////////////////////////
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer(); //执行 DOM 到 XML 的转换。
DOMSource ds = new DOMSource (doc); //生产Document对象doc的数据源, doc 作为输入,以便进行转换。
tf.setOutputProperty(OutputKeys.ENCODING, "utf-8"); //设置输出文件的编码格式为 UTF-8。
tf.setOutputProperty(OutputKeys.INDENT,"yes"); //设置输出文件的缩进格式为 是,以便更好地阅读。
StreamResult sr = new StreamResult(new FileOutputStream(f)); //这个结果对象将输出写入到指定的文件。
tf.transform(ds, sr); //这将把 DOM 树中的数据转换为 XML 格式,并将其写入到文件中。
标签:DOM,nod,doc,Element,编辑,user,new,节点 From: https://www.cnblogs.com/460759461-zeze/p/18150506