[英]Using a for loop to add nodes using DOM to an XML
好吧,我有一個程序可以招募很多人。 然后,向每個人詢問衣領:襯衫和油漆。 我希望Java使用DOM將所有這些信息放入XML。
這是我到目前為止的內容:
import java.io.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
public class calcWithMem {
public static void main(String[] args) throws Exception{
System.out.println("Program launched");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.newDocument();
Element root = doc.createElement("People");
doc.appendChild(root);
System.out.print("Number of people: ");
String in = bf.readLine();
int ppl = Integer.parseInt(in);
String[] pants = new String[ppl];
String[] shirt = new String[ppl];
for (int i=0;i<ppl;i++) {
//So what I want is for here to add a new node to the root called "Person 1, Person2, ... etc.)
System.out.print("Colour of PANTS for person #" + String.valueOf(i+1) + ": ");
in = bf.readLine();
pants[i] = in;
//And then have a node added to the person with pants
System.out.print("Colour of SHIRT for person #" + String.valueOf(i+1) + ": ");
in = bf.readLine();
shirt[i] = in;
//and one last node added to the person with shirt, after this it repeats for each person
System.out.println();
}
for (int i=0;i<ppl;i++) {
System.out.println("Person #" + String.valueOf(i+1) + ":");
System.out.println(" Pants: " + pants[i]);
System.out.println(" Shirt: " + shirt[i]);
}
}
}
您可以使用doc.createElement
創建新元素
Element person=document.createElement("Person");
person.setAttribute("ID", String.valueOf(i+1)); // to add attribute
Element pantsColor=doc.createElement("PantsColor");
Element shirtColor=doc.createElement("ShirtColor");
pantsColor.appendChild(doc.createTextNode(in));
person.appendChild(pantsColor);
person.appendChild(shirtColor);
root.appendChild(person);
...
並保存doc
,
TransformerFactory transFactory=TransformerFactory.newInstance();
Transformer trans=transFactory.newTransformer();
trans.setOutputProperty(OutputKeys.INDENT, "yes");
trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "5");
trans.transform(new DOMSource(doc),new StreamResult("c:\\file.xml"));
怎么樣:
for (int i=0;i<ppl;i++) {
Element person = root.addElement("Person");
root.appendChild(person);
in = bf.readLine();
pants[i] = in;
Element pants = person.addElement("pants");
// [add subelements/attributes to pants]
in = bf.readLine();
shirt[i] = in;
Element shirt = person.addElement("shirt");
// [add subelements/attributes to shirt]
}
// Use a Transformer for output
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
基本上在上面的示例中,我使用了System.out。 您可以打開一個文件並將其寫入。 只有將其關閉后,它才會實際寫出Xml文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.