java - 使用 for 循环将使用 DOM 的节点添加到 XML

标签 java xml dom nodes

好吧,我有一个需要很多人的程序。然后,它会询问每个人的衣领:衬衫和油漆。我希望 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);
...

并保存文档

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"));

关于java - 使用 for 循环将使用 DOM 的节点添加到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12065645/

相关文章:

javascript - AngularJS:一旦 Promise 得到解决,就操作 DOM 以获取新 View

java - 在 Java 中克隆不可变对象(immutable对象)

java - 继承和资源尝试

c# - 如何在 Visual Studio 2010 中使用 xsd 文件验证 xml 文件

java - 将 DOM 元素编码从 CP1251 转换为 UTF-8

java - xom xpath 查询的性能与 jaxp xpath 查询与 dom 性能的比较

javascript - 尽管使用了 on(),但在将元素添加到 DOM 后,Jquery 单击事件不会触发

Java:淡出音乐

java - Android 应用程序在清除 RAM 内存后崩溃

java - Gson 可以生成 XML 吗?