我是Java的新手,我想做以下任务。请指导我2做同样的事。
我想用Java编写源代码(核心Java或servlet)来完成以下任务。
使用对象,数据结构,接口,线程池,适用的连接池。 如果需要或在任何地方适用,请执行任何验证:
第一个xml:
<geodata>
<person name="tom">
<address>2344 States Drive, MA 01213, USA</address>
<phonenumber>333-222-2222</phonenumber>
</person>
<person name="mat">
<address>2345 Gates Drive, PA 11213, USA</address>
<phonenumber>444-222-2222</phonenumber>
</person>
</geodata>
第二个xml:
<salarydata>
<person name="mat">
<salary>$3000</salary>
<pension>$500</pension>
</person>
<person name="tom">
<salary>$3500</salary>
<pension>$700</pension>
</person>
</salarydata>
从上面的2个xmls中,形成一个xml,比如persondata.xml(通过Java 程序,它将以上2个文件作为输入),如下所示:
<persondata>
<person name="tom">
<address>2344 States Drive, MA 01213, USA</address>
<phonenumber>333-222-2222</phonenumber>
<salary>$3500</salary>
<pension>$700</pension>
</person>
<person name="mat">
<address>2345 Gates Drive, PA 11213, USA</address>
<phonenumber>444-222-2222</phonenumber>
<salary>$3000</salary>
<pension>$500</pension>
</person>
</persondata>
使用Java从persondata.xml中提取此数据并存储在persondata数据库表中。 形成您自己的persondata表结构(保留上述persondata.xml元数据作为参考)。 数据库位于SQL Server
编写一个html表单,接受用户为每个数据库字段添加一些关键字(例如,States Drive或333或$ 700)以及搜索persondata数据库表并打印/回显匹配记录的相应操作Servlet在用户屏幕上(在本例中,汤姆的记录)。
PL。在本练习中,只要您认为合适,就可以使用AJAX,J Query等相关工具/组件。
答案 0 :(得分:0)
以下是使用JDOM的代码:
Document xml1 = new SAXBuilder().build(new StringReader("<geodata>\n"
+ " <person name=\"tom\">\n"
+ " <address>2344 States Drive, MA 01213, USA</address>\n"
+ " <phonenumber>333-222-2222</phonenumber>\n"
+ " </person>\n"
+ " <person name=\"mat\">\n"
+ " <address>2345 Gates Drive, PA 11213, USA</address>\n"
+ " <phonenumber>444-222-2222</phonenumber>\n"
+ " </person>\n"
+ "</geodata>"));
Document xml2 = new SAXBuilder().build(new StringReader("<salarydata>\n"
+ " <person name=\"mat\">\n"
+ " <salary>$3000</salary>\n"
+ " <pension>$500</pension>\n"
+ " </person>\n"
+ " <person name=\"tom\">\n"
+ " <salary>$3500</salary>\n"
+ " <pension>$700</pension>\n"
+ " </person>\n"
+ "</salarydata>"));
List<Element> geodata = xml1.getRootElement().getChildren();
List<Element> salarydata = xml2.getRootElement().getChildren();
//Element root = new Element("persondata");
for (Element e : geodata) {
for (Element e2 : salarydata) {
if (e.getAttributeValue("name").equals(e2.getAttributeValue("name"))) {
e.addContent(e2.removeContent());
}
}
}
Element rootNode = xml1.getRootElement();
rootNode.setName("persondata");
new XMLOutputter().output(xml1, System.out);
}
答案 1 :(得分:0)
最后,我找到了自己问题的答案,这很有效。
package com.techassignment;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class Class1 {
static public void main(String[] arg)
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
Document doc = null;
Document doc2 = null;
{
try {
db = dbf.newDocumentBuilder();
doc = db.parse(new File("C:\\Users\\mkar\\workspace\\techassignment - new\\src\\com\\techassignment\\1st.xml"));
doc2 = db.parse(new File("C:\\Users\\mkar\\workspace\\techassignment - new\\src\\com\\techassignment\\2nd.xml"));
NodeList ndListFirstFile = doc.getElementsByTagName("person");
Node nodeSalary = doc.importNode(doc2.getElementsByTagName("salary").item(0), true);
Node nodePension = doc.importNode(doc2.getElementsByTagName("pension").item(0), true);
Node nodeSalary1 = doc.importNode(doc2.getElementsByTagName("salary").item(1), true);
Node nodePension1 = doc.importNode(doc2.getElementsByTagName("pension").item(1), true);
ndListFirstFile.item(0).appendChild(nodeSalary);
ndListFirstFile.item(0).appendChild(nodePension);
ndListFirstFile.item(1).appendChild(nodeSalary1);
ndListFirstFile.item(1).appendChild(nodePension1);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new StringWriter());
transformer.transform(source, result);
Writer output = null ;
output = new BufferedWriter(new FileWriter("C:\\Users\\mkar\\workspace\\techassignment - new\\src\\com\\techassignment\\testFinal.xml"));
String xmlOutput = result.getWriter().toString();
output.write(xmlOutput);
output.close();
System.out.println("XML Merged");
} catch (ParserConfigurationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SAXException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (IOException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
} catch (TransformerException e4) {
// TODO Auto-generated catch block
e4.printStackTrace();
}
}
}
}