0
我正在尝试使用JSP将表单数据存储在XML文件中。这样我输入多个条目后,但是,我得到了重复行:我如何在XML生成器中重复使用部分?
(似乎当记录2追加,记录2之前,整个事情被重写)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Students>
<Name>test1</Name>
<Title>balala</Title>
<URL>www.kaka.com</URL>
</Students>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Students>
<Name>test1</Name>
<Title>balala</Title>
<URL>www.kaka.com</URL>
<Name>test2</Name>
<Title>nana</Title>
<URL>www.lolo.com</URL>
</Students>
我正在使用的代码:
<body>
<h3>Get Data from the form</h3>
<p>
<%
//Get data from the form
String name= request.getParameter("name");
String title=request.getParameter("title");
String url= request.getParameter("url");
%>
<%!
public void createXmlTree(String name,String title,String url) throws Exception {
Element root;
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = builderFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
File file = new File("C:/Users/webservstu/Documents/new.xml");
if (file.exists())
{
doc = docBuilder.parse(file);
root = doc.getDocumentElement();
String sr = root.getNodeName();
}
else
{
System.out.println(name);
root = doc.createElement("Students");
doc.appendChild(root);
}
Element child1 = doc.createElement("Name");
root.appendChild(child1);
Text text1 = doc.createTextNode(name);
child1.appendChild(text1);
Element child2 = doc.createElement("Title");
root.appendChild(child2);
Text text2 = doc.createTextNode(title);
child2.appendChild(text2);
Element child3 = doc.createElement("URL");
root.appendChild(child3);
Text text3 = doc.createTextNode(url);
child3.appendChild(text3);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);
String xmlString = sw.toString();
FileWriter fw=new FileWriter(file,true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(xmlString);
bw.flush();
bw.close();
}%>
<%
try
{
createXmlTree(name,title,url);
out.println("<b>Xml File Created Successfully</b>");
}
catch(Exception e)
{
System.out.println(e);
}
%>
<br>
</p>
<hr>
<p><font size="2">*Direct Submission*</font></p>
</body>
有什么想法?谢谢!!!
感谢乔恩,我第一次尝试将第二个参数更改为false后。有效。但是,新添加的记录也包含在根类别“学生”中。无论如何,使它在一个新的“学生”包装?对不起,我对此很感兴趣。谢谢。 – eastboundr 2012-03-26 16:35:10
@eastboundr:正如我所说的,你应该改变为不使用'FileWriter' ......但是如果你想创建一个新的'Student'元素,你将不得不调用'doc.createElement(“Student” )'并将所有元素添加到* that *元素,而不是直接添加到根节点。 – 2012-03-26 16:37:25