Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用for循环将使用DOM的节点添加到XML_Java_Xml_Dom_Nodes - Fatal编程技术网

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

Java 使用for循环将使用DOM的节点添加到XML,java,xml,dom,nodes,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 ja

好的,我有一个节目,要求很多人参加。然后,对于每个人,它要求衣领:衬衫和油漆。我希望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]);
        }
    }
}
import java.io.*;
导入org.w3c.dom.*;
导入org.xml.sax.*;
导入javax.xml.parsers.*;
导入javax.xml.transform.*;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult;
公共类calcWithMem{
公共静态void main(字符串[]args)引发异常{
System.out.println(“程序启动”);
BufferedReader bf=新的BufferedReader(新的InputStreamReader(System.in));
DocumentBuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc=builder.newDocument();
元素根=doc.createElement(“人”);
doc.appendChild(根);
系统输出打印(“人数:”);
字符串in=bf.readLine();
int ppl=Integer.parseInt(in);
字符串[]裤子=新字符串[ppl];
字符串[]衬衫=新字符串[ppl];
对于(inti=0;i

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]

}
for(int i=0;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"));

基本上,在上面的示例中,我使用了System.out。您可以打开一个文件并写入其中。只有在您关闭它之后,它才会真正写出Xml文件。

您卡在哪里了?好的,看起来您首先需要创建一个根并添加元素,然后您必须按照上面的步骤写出Xml文件。HTH.righ但如果我有3个人,比如说,我得到一个根,在3个相同的节点中,名为“Person”。我想要的是……….除了不设置属性之外,我可以在创建元素的实际标记中使用“String.valueOf(I+1)”。谢谢AVD:)
  // 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);