Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 将根元素添加到XML_Java_Xml_Xmlroot - Fatal编程技术网

Java 将根元素添加到XML

Java 将根元素添加到XML,java,xml,xmlroot,Java,Xml,Xmlroot,我是个十足的傻瓜,因为我以前对java编程一无所知 话虽如此,我已经设法将一些代码安排到一个工作的txt到xml转换器中 请特别注意以下事项: 我对代码的构建一点都不了解,我把它看作是从不同的页面中查找每一个片段并将其合并在一起的人,不是一点点,而是很多帮助。在报告此问题之前,请记住这一点。谢谢 给定以下代码: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundExce

我是个十足的傻瓜,因为我以前对java编程一无所知

话虽如此,我已经设法将一些代码安排到一个工作的txt到xml转换器中

请特别注意以下事项:

我对代码的构建一点都不了解,我把它看作是从不同的页面中查找每一个片段并将其合并在一起的人,不是一点点,而是很多帮助。在报告此问题之前,请记住这一点。谢谢

给定以下代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.io.xml.XmlFriendlyNameCoder;

public class xml{

static class Bean {
    int id;
    String firstname;
    String lastname;
    String mail;

    public Bean(int id, String firstname, String lastname, String mail) {
        super();
        this.id = id;
        this.firstname = firstname;
        this.lastname = lastname;
        this.mail = mail;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }
}

private XStream xstream = new XStream();

public static void main(String[] args) throws IOException {

    new xml().process();
}

private void process() throws FileNotFoundException, IOException {

    xstream.alias("item", Bean.class);
    BufferedReader br = new BufferedReader(new FileReader("\\test.txt"));
    try {
        String line = br.readLine();
        line = br.readLine();
        while (line != null) {
            String[] split = line.split("\t");
            Bean bean = new Bean(new Integer(split[0]), split[1], split[2], split[3]);
            createBeanFile(bean);
            line = br.readLine();
        }
    } finally {
        br.close();
    }

}   

private void createBeanFile(Bean bean) throws IOException {

    BufferedWriter bw = new BufferedWriter
            (new OutputStreamWriter(new FileOutputStream("\\test.xml"),"UTF-8"));
    String str = xstream.toXML(bean);
    bw.write(str);
    bw.close();
    }
}
如何以及在何处添加根元素以修改当前输出:

<item>
  <id>56885</id>
  <firstname>LYTF</firstname>
  <lastname>LPRT</lastname>
  <mail>LYTF_LPRT@DERP.COM</mail>
</item>

56885
LYTF
LPRT
LYTF_LPRT@DERP.COM
为此:

<root>
    <item>
      <id>56885</id>
      <firstname>LYTF</firstname>
      <lastname>LPRT</lastname>
      <mail>LYTF_LPRT@DERP.COM</mail>
    </item>
</root>

56885
LYTF
LPRT
LYTF_LPRT@DERP.COM

我敦促您研究如何使用,而不是复制现有的(实现糟糕的代码),并尝试根据您的需要对其进行修改

您可以做的是添加一个根类,它保存项目的集合

static class Root{

    List<Item> item = new ArrayList<Item>();

    public List<Item> getitem() {
        return item;
    }

    public void setBeans(List<Item> item) {
        this.item = item;
    }
}
然后在while循环中,将项目添加到根类中,并在循环后写出XML

while (line != null) {
            String[] split = line.split(",");
            Item item = new Item(new Integer(split[0]),split[1]);
            root.getitem().add(item);
            line = br.readLine();
        }

        createBeanFile(root);

希望这能让您开始。

我知道添加DocumentBuilderFactory和一些元素根会起到作用,但我当然不知道应该将其放在哪里,也不知道如何安排现有代码。在您了解这段安排好的代码的用途和方式之前,您无法做到这一点
while (line != null) {
            String[] split = line.split(",");
            Item item = new Item(new Integer(split[0]),split[1]);
            root.getitem().add(item);
            line = br.readLine();
        }

        createBeanFile(root);