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
二维码