有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

sqlservermerge2xml&使用java提取这些数据并将其存储在db表中

我是Java新手,我想做以下任务。请引导我做同样的事情

我想为下面的任务用Java(核心Java或servlet)编写源代码

使用对象、数据结构、接口、线程池、连接池(如果适用)。 如果需要或适用,执行任何验证:

  1. 假设有两个xml文件:

第一个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>

从上述两个xml中,形成一个xml,比如persondata。xml(通过Java 程序,将上述两个文件作为输入),如下所示:

<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>
  1. 使用Java从persondata中提取此数据。xml并存储在persondata db表中。 形成您自己的persondata表结构(保留上述persondata.xml元数据作为参考)。 数据库位于SQL Server中

  2. 编写一个html表单,从用户处为每个db字段(例如,States Drive或333或$700)接收一些关键字,并编写一个相应的操作Servlet,用于搜索persondata db表并将匹配的记录打印/回显到用户屏幕上(在本例中为tom的记录)

Pl.在本练习中,只要您认为合适,就使用相关的工具/组件,如AJAX、J Query


共 (2) 个答案

  1. # 1 楼答案

    下面是使用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);
        }
    
  2. # 2 楼答案

    最后我找到了我自己问题的答案,这很有效

    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();
        }
    
        }
        }
    }