[英]How to add sibling and child nodes into a XML file?
我程序的目的是在循环中添加数组中的一组单词。 假设在每次迭代中,它应该将节点的起始索引到结束索引中的单词作为其子节点添加。 XML文件和每个节点都应在运行时进行,但是要考虑的是,如果程序停止并再次运行,则应继续通过添加新节点向现有XML文件中添加新单词。在最后一个现有节点之后。 这是我制作XML文件并向其中添加节点的方法,但是它向根节点添加了节点,并且它们没有任何子节点(子节点应在迭代中添加到每个节点中,但是它们被视为一个单独的节点而不是子节点):
private static void createXML(String word, int id) {
Element Word= doc.createElement("word"+id);
rootElement.appendChild(Word);
//doc.appendChild(Word);
Attr attr = doc.createAttribute("id");
attr.setValue(Integer.toString(id));
Word.setAttributeNode(attr);
Element Content= doc.createElement("content");
Content.appendChild(doc.createTextNode(word));
Word.appendChild(Content);
}
private static void saveXML() {
transformerFactory = TransformerFactory.newInstance();
transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("g:\\words.xml"));
transformer.transform(source, result);
}
public static void main(String[] args){
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Element doc = docBuilder.newDocument();
Element rootElement = doc.createElement("WORDS");
doc.appendChild(rootElement);
for(int i=m, i<n; i++)
createXML(array[m...n], i);
saveXML();
}
如果有人想知道如何做,这是需要进行的更改:
private static void createXMLnew(String[] words) {
Element[] word=new Element[words.size()];
for(int i=0;i<words.size();i++){
if(i==0)
{
word[0] = doc.createElement("word"+0);
rootElement.appendChild(url[0]);
Attr attr = doc.createAttribute("id");
attr.setValue(Integer.toString(0));
word[0].setAttributeNode(attr);
Element adr = doc.createElement("adr");
adr.appendChild(doc.createTextNode(words[0]));
words[0].appendChild(adr);
}
else{
word[i] = doc.createElement("word"+i);
word[0].appendChild(word[i]);
Attr attr = doc.createAttribute("id");
attr.setValue(Integer.toString(i));
word[i].setAttributeNode(attr);
Element adr = doc.createElement("adr");
adr.appendChild(doc.createTextNode(words[i]));
words[i].appendChild(adr);
}
}
}
在这种情况下,第一个元素将是其余元素的父亲。 为了使每个XML文件包含唯一项,需要对save()
进行此更改
private static void saveXML(int i) {
transformerFactory = TransformerFactory.newInstance();
transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("g:\\words"+i+".xml"));
transformer.transform(source, result);
docFactory = DocumentBuilderFactory.newInstance();
docBuilder = docFactory.newDocumentBuilder();
doc = docBuilder.newDocument();
rootElement = doc.createElement("WORDS");
doc.appendChild(rootElement);
//all these added objects need to be defined as static object out of main() function
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.