📄 convertcrosstalk.java
字号:
import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import java.io.*;
import java.util.*;
public class ConvertCrossTalk {
Document oldDoc;
Document newDoc;
Map<String,Element> elements=new HashMap<String,Element>();
Map<String,String> relations=new HashMap<String,String>();
public static void main(String[] args) throws Exception {
ConvertCrossTalk de=new ConvertCrossTalk();
de.parseOldXML();
de.buildNewDOMTree();
de.createNewXML();
}
public ConvertCrossTalk() throws Exception{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
oldDoc=db.parse(new File("CrossTalk.xml"));
newDoc=db.newDocument();
}
public void parseOldXML() throws Exception{
NodeList nl=oldDoc.getElementsByTagName("演员");
for(int i=0;i<nl.getLength();i++){
Element e=(Element)(nl.item(i));
String name=e.getTextContent().trim();
String id=e.getAttribute("id");
String parent=e.getAttribute("师父");
relations.put(id,parent);
Element e2=newDoc.createElement("演员");
Attr attr=newDoc.createAttribute("name");
attr.setValue(name);
e2.setAttributeNode(attr);
elements.put(id,e2);
}
}
public void buildNewDOMTree() throws Exception{
for(String id:relations.keySet()){
String parent=relations.get(id);
Element e1=elements.get(id);
if (parent.equals("")) {
Element root=newDoc.createElement("演员列表");
root.appendChild(newDoc.createTextNode("\n"));
root.appendChild(e1);
root.appendChild(newDoc.createTextNode("\n"));
newDoc.appendChild(root);
continue;
}
Element e2=elements.get(parent);
e2.appendChild(newDoc.createTextNode("\n"));
e2.appendChild(e1);
}
}
public void createNewXML() throws Exception{
TransformerFactory tf=TransformerFactory.newInstance();
Transformer tran=tf.newTransformer();
DOMSource ds=new DOMSource(newDoc);
StreamResult sr=new StreamResult(new FileOutputStream("CrossTalk2.xml"));
tran.transform(ds,sr);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -