Java: how to use the w3c. Wrap all elements in DOM?
•
Java
My goal is to wrap each DOM element (node. Element_node) in the current org. Org w3c. dom. On the document, the label is < something style = "background color: Red" > < / something >
public static void main(String[] args){
org.w3c.dom.DOMDocument doc;
paintAllNodes(doc,0);
}
public static void paintAllNodes(Node node,int level) {
// Process node
// If there are any children,visit each one
NodeList list = node.getChildNodes();
for (int i=0; i<list.getLength(); i++) {
// Get child node
Node childNode = list.item(i);
// Visit child node
paintAllNodes(childNode,level+1);
}
}
Solution
I would like to propose a recursive solution that uses the node#replacechild method to replace nodes with new labels:
public static void paintAllNodes(Node node) {
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element somethingElement = node.getOwnerDocument().createElement("something");
somethingElement.setAttribute("style","background-color:red");
node.getParentNode().replaceChild(somethingElement,node);
somethingElement.appendChild(node);
NodeList nodeList = node.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
paintAllNodes(nodeList.item(i));
}
}
}
This is my main content:
public static void main(String[] args) throws SAXException,IOException,ParserConfigurationException,TransformerException {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document document = docBuilder.parse(new File("document.xml"));
paintAllNodes(document.getDocumentElement());
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out);
transformer.transform(source,result);
}
I tested it with this XML:
<html>
<head>
<title>title</title>
</head>
<body>
<h1>title</h1>
<div>test</div>
</body>
</html>
My main task is to print out this new XML, which seems to be what you want:
<?xml version="1.0" encoding="UTF-8"?><something style="background-color:red"><html>
<something style="background-color:red"><head>
<something style="background-color:red"><title>title</title></something>
</head></something>
<something style="background-color:red"><body>
<something style="background-color:red"><h1>title</h1></something>
<something style="background-color:red"><div>test</div></something>
</body></something>
</html></something>
I hope this will help
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
