这是一个简单的问题。但是我不能调试它。我有类“Adding.java”,它将一些数据添加到ArrayList
public class Adding {
WriteFile ob = new WriteFile();
ArrayList list = new ArrayList();
public void add(){
list.add("Tim");
list.add(2333);
list.add(23);
list.add("John");
list.add(423);
list.add(23);
ob.writeXmlFile(list);
} }
另一个类“WriteFile.java”创建了一个xml文件
public class WriteFile {
public void writeXmlFile(ArrayList<Object> 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(int i=0; i<list.size(); i ++ ) {
Element name = doc.createElement("Name");
name.appendChild(doc.createTextNode(String.valueOf(list.get(i))));
Details.appendChild(name);
Element id = doc.createElement("ID");
id.appendChild(doc.createTextNode(String.valueOf(list.get(i))));
Details.appendChild(id);
Element mmi = doc.createElement("Age");
mmi.appendChild(doc.createTextNode(String.valueOf(list.get(i))));
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 {
FileWriter fos = new FileWriter("/home/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");
}
当我执行此操作时,我得到以下输出
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Studentinfo>
<Details>
<name>Tim</name>
<Id>Tim</Id>
<age>Tim</age>
<name>2333</name>
<Id>2333</Id>
<age>2333</age>
.....
</Details>
</studentinfo>
等等但我希望最终输出是这种形式的
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Studentinfo>
<Details>
<name>Tim</name>
<Id>2333</Id>
<age>23</age>
<name>John</name>
<Id>423</Id>
<age>2333</age>
<size>23</size>
</Details>
</studentinfo>
“for”循环在“list”元素上迭代有什么问题吗。感谢您的帮助。提前感谢
下面是一个清晰XML文件的示例:
Element root = doc.createElement("RectanglesInfo");
doc.appendChild(root);
for(int i=0; i<rectangles.size(); i ++ ) {
Element rectangle = doc.createElement("Rectangle");
root.appendChild(rectangle);
Element width = doc.createElement("width");
width.appendChild(doc.createTextNode(Double.toString(rectangles.get(i).getWidth())));
rectangle.appendChild(width);
Element height = doc.createElement("height");
height.appendChild(doc.createTextNode(Double.toString(rectangles.get(i).getHeight())));
rectangle.appendChild(height);
}
结果会是这样的:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<RectanglesInfo>
<Rectangle>
<width>89.0</width>
<height>85.0</height>
</Rectangle>
<Rectangle>
<width>205.0</width>
<height>212.0</height>
</Rectangle>
</RectanglesInfo>
因此,您可以添加学生的信息,而不是矩形。
您需要以3的增量遍历列表:
for(int i=0; i<list.size() - 2; i += 3 ) {
Element name = doc.createElement("Name");
name.appendChild(doc.createTextNode(String.valueOf(list.get(i))));
Details.appendChild(name);
Element id = doc.createElement("ID");
id.appendChild(doc.createTextNode(String.valueOf(list.get(i + 1))));
Details.appendChild(id);
Element mmi = doc.createElement("Age");
mmi.appendChild(doc.createTextNode(String.valueOf(list.get(i + 2))));
Details.appendChild(mmi);
}
但是,最好在列表中存储自定义类的对象,并使用名称、id和年龄的专用字段。
你为什么不在你的列表中存储学生对象,每个对象都有一个名字、一个ID和一个年龄?这将更易于维护,也更容易编程?
目前,您使用列表中的相同索引来查找这三个属性。您需要在循环中按3步进行迭代,并获得元素i、i 1和i 2以使其工作。
list.add(new Student("Tim", 2333, 23));
list.add(new Student("John", 423, 23));
...
for (Student student : studentList) {
...
name.appendChild(doc.createTextNode(student.getName()));
...
id.appendChild(doc.createTextNode(Integer.toString(student.getId())));
...
age.appendChild(doc.createTextNode(Integer.toString(student.getAge())));
}
问题内容: 我试图将XML 存储到XML文件中,以便稍后可以检索信息,然后将其显示回控制台。 有人可以告诉我最有效的方法吗? 编辑: 这是我要写入外部文件的内容 这一切都创建了一个Bank用户,该用户被扔到中,然后我想存储他们的信息,以便稍后返回并重新显示。 问题答案: //根据需要修改下面的类 //下面的类实际写了
} PS,arrayList中的内容插入到程序中的某个点,因此arrayList不是空的。
问题内容: 用最简单的方法,在java中如何创建一个文件并写入内容? 问题答案: 创建一个文本文件: 创建一个二进制文件: Java 7+用户可以使用Files该类来写入文件: 创建一个文本文件: 创建一个二进制文件:
我必须写一个程序: 提示用户输入输入文件的名称, 从输入文件中读取数据,并将有关汽车的信息存储在汽车对象数组列表中, 将数组列表中未排序的数据打印到屏幕上,如下所示: 我想不出前三步该怎么做。 我也有两个类,与这个项目,并将添加他们,如果需要/需要。因此,基本上只需要帮助了解如何从用户那里读取文本文件,将文本文件的内容添加到ArrayList中,并以格式化的方式打印出ArrayList的内容(我的
问题内容: 假设我有一个名为abhishek.txt的文件,其中包含以下行 我是,你叫什么名字。 现在我要写 阿比舍克 在“我是”之后,就像我是Abhishek,..如何直接在此特定位置书写内容。 问题答案: 您不能将数据插入文件中。您可以使用覆盖特定位置的数据。但是,插入操作需要更改其后的所有数据。对于您的情况,请尝试以下类似方法:
问题内容: 我想用 用该文件夹的内容制作一个ArrayList。 我对缓冲的读者不是很好,所以请告诉我是否更好。 这是我到目前为止的代码: 谢谢,obiedog 问题答案: 最简单的方法是: 如果想要的是名称列表: