seed所对应的对象.addAttribute("abc","1")
该方法会在seed中添加一个属性名是abc
值是
1的属性
//
使用addAttribute方法向journal元素添加title和publisher属性
journalElement.addAttribute("title",
"XML
Zone")
journalElement.addAttribute("publisher",
"Willpower
Co")
import java.io.Fileimport java.io.FileNotFoundException
import java.io.FileOutputStream
import java.io.IOException
import org.w3c.dom.*
import org.xml.sax.SAXException
import javax.xml.parsers.*
import javax.xml.transform.*
import javax.xml.transform.dom.DOMSource
import javax.xml.transform.stream.*
import javax.xml.xpath.*
public class Test {
public static void main(String[] args) {
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance()
Element theBook=null, theElem=null, root=null
try {
factory.setIgnoringElementContentWhitespace(true)
DocumentBuilder db=factory.newDocumentBuilder()
Document xmldoc=db.parse(new File("Test1.xml"))
root=xmldoc.getDocumentElement()
theBook=(Element) selectSingleNode("/books/book[name='哈里波特']", root)
System.out.println("--- 查询找《哈里波特》 ----")
Element nameNode=(Element)theBook.getElementsByTagName("price").item(0)
String name=nameNode.getFirstChild().getNodeValue()
System.out.println(name)
output(theBook)
System.out.println("=============selectSingleNode(books/book[name='哈里波特'], root)==================")
//--- 新建一本书开始 ----
theBook=xmldoc.createElement("book")
theElem=xmldoc.createElement("name")
theElem.setTextContent("新书")
theBook.appendChild(theElem)
theElem=xmldoc.createElement("price")
theElem.setTextContent("20")
theBook.appendChild(theElem)
theElem=xmldoc.createElement("memo")
theElem.setTextContent("新书的更好看。")
theBook.appendChild(theElem)
root.appendChild(theBook)
System.out.println("--- 新建一本书开始 ----")
output(xmldoc)
System.out.println("==============================")
//--- 新建一本书完成 ----
//--- 下面对《哈里波特》做一些修改。 ----
//--- 查询找《哈里波特》----
//--- 此时修改这本书的价格 -----
theBook.getElementsByTagName("price").item(0).setTextContent("15")//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,getElementsByTagName("price")相当于xpath的".//price"。
System.out.println("--- 此时修改这本书的价格 ----")
output(theBook)
//--- 另外还想加一个属性id,值为B01 ----
theBook.setAttribute("id", "B01")
System.out.println("--- 另外还想加一个属性id,值为B01 ----")
output(theBook)
//--- 对《哈里波特》修改完成。 ----
//--- 要用id属性删除《三国演义》这本书 ----
theBook=(Element) selectSingleNode("/books/book[@id='B02']", root)
System.out.println("--- 要用id属性删除《三国演义》这本书 ----")
output(theBook)
theBook.getParentNode().removeChild(theBook)
System.out.println("--- 删除后的XML ----")
output(xmldoc)
//--- 再将所有价格低于10的书删除 ----
NodeList someBooks=selectNodes("/books/book[price<10]", root)
System.out.println("--- 再将所有价格低于10的书删除 ---")
System.out.println("--- 符合条件的书有 "+someBooks.getLength()+"本。 ---")
for(int i=0i<someBooks.getLength()i++) {
someBooks.item(i).getParentNode().removeChild(someBooks.item(i))
}
output(xmldoc)
saveXml("Test1_Edited.xml", xmldoc)
} catch (ParserConfigurationException e) {
e.printStackTrace()
} catch (SAXException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
}
public static void output(Node node) {//将node的XML字符串输出到控制台
TransformerFactory transFactory=TransformerFactory.newInstance()
try {
Transformer transformer = transFactory.newTransformer()
transformer.setOutputProperty("encoding", "gb2312")
transformer.setOutputProperty("indent", "yes")
DOMSource source=new DOMSource()
source.setNode(node)
StreamResult result=new StreamResult()
result.setOutputStream(System.out)
transformer.transform(source, result)
} catch (TransformerConfigurationException e) {
e.printStackTrace()
} catch (TransformerException e) {
e.printStackTrace()
}
}
public static Node selectSingleNode(String express, Object source) {//查找节点,并返回第一个符合条件节点
Node result=null
XPathFactory xpathFactory=XPathFactory.newInstance()
XPath xpath=xpathFactory.newXPath()
try {
result=(Node) xpath.evaluate(express, source, XPathConstants.NODE)
} catch (XPathExpressionException e) {
e.printStackTrace()
}
return result
}
public static NodeList selectNodes(String express, Object source) {//查找节点,返回符合条件的节点集。
NodeList result=null
XPathFactory xpathFactory=XPathFactory.newInstance()
XPath xpath=xpathFactory.newXPath()
try {
result=(NodeList) xpath.evaluate(express, source, XPathConstants.NODESET)
} catch (XPathExpressionException e) {
e.printStackTrace()
}
return result
}
public static void saveXml(String fileName, Document doc) {//将Document输出到文件
TransformerFactory transFactory=TransformerFactory.newInstance()
try {
Transformer transformer = transFactory.newTransformer()
transformer.setOutputProperty("indent", "yes")
DOMSource source=new DOMSource()
source.setNode(doc)
StreamResult result=new StreamResult()
result.setOutputStream(new FileOutputStream(fileName))
transformer.transform(source, result)
} catch (TransformerConfigurationException e) {
e.printStackTrace()
} catch (TransformerException e) {
e.printStackTrace()
} catch (FileNotFoundException e) {
e.printStackTrace()
}
}
}
XML:
<?xml version="1.0" encoding="GBK"?>
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
<book id="B02">
<name>三国演义</name>
<price>10</price>
<memo>四大名著之一。</memo>
</book>
<book id="B03">
<name>水浒</name>
<price>6</price>
<memo>四大名著之一。</memo>
</book>
<book id="B04">
<name>红楼</name>
<price>5</price>
<memo>四大名著之一。</memo>
</book>
</books>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)