今天面试,这道题不会,回家后,搞明白了。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.*;
import javax.xml.transform.Transformer;
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.*;
import org.xml.sax.*;
public class XmlModifier {
/**
*
*
*/
public XmlModifier() {
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder dombuilder = domfac.newDocumentBuilder();
InputStream is = new FileInputStream("NewFile.xml");
//文档
Document doc = dombuilder.parse(is);
//根节点
Element root = doc.getDocumentElement();
//根下的子节点
NodeList books = root.getChildNodes();
if (books != null) {
for (int i = 0; i < books.getLength(); i++) {
Node book = books.item(i);
if (book.getNodeType() == Node.ELEMENT_NODE) {
String email = book.getAttributes().getNamedItem(
"email").getNodeValue();
System.out.println(email);
//子节点的子节点
for (Node node = book.getFirstChild(); node != null; node = node
.getNextSibling()) {
if (node.getNodeType() == Node.ELEMENT_NODE) {
if (node.getNodeName() == "name") {
//String name = node.getNodeValue();
String name1 = node.getFirstChild()
.getNodeValue();
//System.out.println(name);
System.out.println(name1);
}
if (node.getNodeName() == "price") {
String price = node.getFirstChild()
.getNodeValue();
System.out.println(price);
//修改字段
node.setTextContent("88888888");
}
}
}
}
}
//修改 屏蔽的内容是增加新节点
/*Element catalog3 = doc.createElement("catalog3");
catalog3.setAttribute("id", "4");
catalog3.setTextContent("Music");
root.appendChild(catalog3);
writeXML(doc, "NewFile.xml");*/
//保存文件作用
writeXML(doc, "NewFile.xml");
}
} catch (ParserConfigurationException e) {
// TODO: handle exception
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new XmlModifier();
}
//保存新的Document
private static void writeXML(Document doc, String file) {
try {
Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty("indent", "yes");
t.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(file)));
} catch (TransformerException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
//创建新Document
private static void newDocument(DocumentBuilder db) throws SAXException, IOException {
Document doc = db.newDocument();
Element root = doc.createElement("root");
doc.appendChild(root);
root.appendChild(doc.createElement("new"));
writeXML(doc, "new.xml");
}
}