当前位置: 首页 > 面试题库 >

如何将ArrayList写入XML文件?

康文昌
2023-03-14
问题内容

我试图将ArrayListXML 存储到XML文件中,以便稍后可以检索信息,然后将其显示回控制台。

有人可以告诉我最有效的方法吗?

编辑:

这是我要写入外​​部文件的内容

// new user is created
Bank bank = new Bank();

System.out.println("Enter your full name below (e.g. John M. Smith): ");
String name = scanner.nextLine();
System.out.println("Create a username: ");
String userName = scanner.nextLine();
System.out.println("Enter your starting deposit amount: ");
int balance = scanner.nextInt();

System.out.print(dash);
System.out.print("Generating your information...\n");
System.out.print(dash);

int pin = bank.PIN();
String accountNum = bank.accountNum();

User user = new User(name, userName, pin, accountNum, balance);

//new user gets added to the array list
Bank.users.add(user);

System.out.println(user);

这一切都创建了一个Bank用户,该用户被扔到中ArrayList,然后我想存储他们的信息,以便稍后返回并重新显示。


问题答案:
public static void main(String[] args) {
    // TODO Auto-generated method stub

    WriteFile ob = new WriteFile();
    ArrayList list = new ArrayList();
    list.add(new details("A", 20, 1));
    list.add(new details("B", 30, 2));

    ob.writeXmlFile(list);
}

//根据需要修改下面的类

class details {
String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public int getId() {
    return id;
}

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

int age;
int id;

public details() {
}

public details(String name_, int age_, int id_) {
    name = name_;
    age = age_;
    id = id_;
}

//下面的类实际写了

public void writeXmlFile(ArrayList<details> list) {

    try {

        DocumentBuilderFactory dFact = DocumentBuilderFactory.newInstance();
        DocumentBuilder build = dFact.newDocumentBuilder();
        Document doc = build.newDocument();

        Element root = doc.createElement("Studentinfo");
        doc.appendChild(root);

        Element Details = doc.createElement("Details");
        root.appendChild(Details);


        for (details dtl : list) {

            Element name = doc.createElement("Name");
            name.appendChild(doc.createTextNode(String.valueOf(dtl
                    .getName())));
            Details.appendChild(name);

            Element id = doc.createElement("ID");
            id.appendChild(doc.createTextNode(String.valueOf(dtl.getId())));
            Details.appendChild(id);

            Element mmi = doc.createElement("Age");
            mmi.appendChild(doc.createTextNode(String.valueOf(dtl.getAge())));
            Details.appendChild(mmi);

        }

        // Save the document to the disk file
        TransformerFactory tranFactory = TransformerFactory.newInstance();
        Transformer aTransformer = tranFactory.newTransformer();

        // format the XML nicely
        aTransformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");

        aTransformer.setOutputProperty(
                "{http://xml.apache.org/xslt}indent-amount", "4");
        aTransformer.setOutputProperty(OutputKeys.INDENT, "yes");

        DOMSource source = new DOMSource(doc);
        try {
            // location and name of XML file you can change as per need
            FileWriter fos = new FileWriter("./ros.xml");
            StreamResult result = new StreamResult(fos);
            aTransformer.transform(source, result);

        } catch (IOException e) {

            e.printStackTrace();
        }

    } catch (TransformerException ex) {
        System.out.println("Error outputting document");

    } catch (ParserConfigurationException ex) {
        System.out.println("Error building document");
    }
}


 类似资料:
  • 这是一个简单的问题。但是我不能调试它。我有类“Adding.java”,它将一些数据添加到ArrayList 另一个类“WriteFile.java”创建了一个xml文件 当我执行此操作时,我得到以下输出 等等但我希望最终输出是这种形式的 “for”循环在“list”元素上迭代有什么问题吗。感谢您的帮助。提前感谢

  • 问题内容: 我正在用Java编写一个程序,该程序显示了一系列课后俱乐部(例如,EG Football,曲棍球-由用户输入)。俱乐部被添加到以下: 通过以下方法: ‘Club’是一个带有构造函数的类-名称: 我的程序正在运行-它使我可以将新的Club对象添加到我的数组列表中,可以查看该数组列表,还可以删除所需的任何内容,等等。 但是,我现在想将该arrayList(俱乐部)保存到文件中,然后我希望以

  • 问题内容: 我正在尝试使用Go写入日志文件。 我尝试了几种方法,但都失败了。这是我尝试过的: 日志文件被创建,但是没有任何打印或附加到该文件。为什么? 问题答案: 过去的工作方式一定不同,但这对我有用: 基于Go文档,不能用于,因为它会打开文件“供阅读:” 打开命名文件以供读取。如果成功,则可以使用返回文件上的方法进行读取;关联的文件描述符具有mode 。如果有错误,它将是类型。 编辑 检查后移至

  • 问题内容: 我有许多小的XML块,应该将它们作为子元素嵌入到一个大XML中。有什么办法可以在不转义的情况下将这些块写入其中? 问题答案: 以下是处理此问题的几个选项: 选项#1-使用 您可以使用来将表示您的XML片段的表示形式转换为封装您的XML片段。 选项#2-与 另外,您可以执行以下操作。您可以利用强制来输出其内容。然后您会注意到,在将嵌套XML编写为之前,我这样做会强制start元素结束。需

  • 问题内容: 我正在学习有关Android应用程序开发的课程,并尝试创建xml文件并将其写入android的内部存储中。就方法而言,我在最初设置时遇到问题。我已经写了大部分,但有我无法弄清的错误。也许因为我整天都在工作,所以不知道。这是我本节课的代码。我遇到的错误是公共String宝藏和FileOutputStream上的非法修饰符。任何帮助,将不胜感激。 好的,我找出了最初的问题,需要使用try

  • 问题内容: 我正在不同的机器上运行多个进程,这些进程需要读/写到共享的XML文件,为此我正在使用和(虽然我知道数据库将是一种更有效的方法,但由于项目限制,这种方法不可行) 。 要更改XML文件,相关过程首先创建一个专用锁定的通道,该通道用于读取文件,然后尝试在关闭通道之前重用相同的通道来写入新版本。这样锁就永远不会掉下来。但是,问题是,即使我从未明确关闭通道,尝试写入结果时也会得到提示。我怀疑那行