如何将XML中的数据转换成Java

如何将XML中的数据转换成Java,java,xml,Java,Xml,我想知道如何将XML文件中的数据转换成java代码。为此,我将创建XML文件,然后编写java代码。然后,我将尝试将数据从XML提取到java。为此,必须在我的java代码中进行一些映射,或者我必须使用一些java API。请帮助你的知识或提供给我一些学习的链接 您可以使用内置的SAX或DOM解析器将XML作为字符串读入 可以使用将XML直接映射到对象中 你的选择。但是你需要做一些谷歌搜索和研究。你也可以使用Spring的Jaxb2Marshaller。首先,您需要在Spring上下文中创建Ja

我想知道如何将XML文件中的数据转换成java代码。为此,我将创建XML文件,然后编写java代码。然后,我将尝试将数据从XML提取到java。为此,必须在我的java代码中进行一些映射,或者我必须使用一些java API。请帮助你的知识或提供给我一些学习的链接

您可以使用内置的SAX或DOM解析器将XML作为字符串读入

可以使用将XML直接映射到对象中


你的选择。但是你需要做一些谷歌搜索和研究。

你也可以使用Spring的
Jaxb2Marshaller
。首先,您需要在Spring上下文中创建
Jaxb2Marshaller
bean,指定要为marshaller绑定的类以及定义XML的模式:

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            <value>com.example.Employee</value>
            <value>com.example.Department</value>
        </list>
    </property>
    <property name="schemas">
        <list>
            <value>classpath:schemas/schema.xsd</value>
        </list>
    </property>
</bean>


您可以使用domxml解析器(JAXP)。以下示例取自mkyong

<company>
<staff id="1001">
    <firstname>yong</firstname>
    <lastname>mook kim</lastname>
    <nickname>mkyong</nickname>
    <salary>100000</salary>
</staff>
<staff id="2001">
    <firstname>low</firstname>
    <lastname>yin fong</lastname>
    <nickname>fong fong</nickname>
    <salary>200000</salary>
</staff>
</company>

勇
木金
mkyong
100000
低的
尹芳
芳芳
200000
java代码:

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;

public class ReadXMLFile {

   public static void main(String argv[]) {

       try {
        File fXmlFile = new File("/Users/mkyong/staff.xml");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile); 
        //optional, but recommended
        //read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
        doc.getDocumentElement().normalize(); 
        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
        NodeList nList = doc.getElementsByTagName("staff");
        System.out.println("----------------------------");

            for (int temp = 0; temp < nList.getLength(); temp++) {
        Node nNode = nList.item(temp);
                System.out.println("\nCurrent Element :" + nNode.getNodeName());
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
        Element eElement = (Element) nNode; 
        System.out.println("Staff id : " + eElement.getAttribute("id"));
        System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
        System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
        System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
        System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());

            }
        }
       } catch (Exception e) {
        e.printStackTrace();
       }
    }

}
import javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.DocumentBuilder;
导入org.w3c.dom.Document;
导入org.w3c.dom.NodeList;
导入org.w3c.dom.Node;
导入org.w3c.dom.Element;
导入java.io.File;
公共类ReadXMLFile{
公共静态void main(字符串argv[]){
试一试{
File fXmlFile=新文件(“/Users/mkyong/staff.xml”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(fXmlFile);
//可选,但推荐
//请阅读以下内容-http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
doc.getDocumentElement().normalize();
System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
NodeList nList=doc.getElementsByTagName(“staff”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp

是什么阻止了您使用某种数据库来实现这一目的?例如,可以使用Derby嵌入式数据库。
<company>
<staff id="1001">
    <firstname>yong</firstname>
    <lastname>mook kim</lastname>
    <nickname>mkyong</nickname>
    <salary>100000</salary>
</staff>
<staff id="2001">
    <firstname>low</firstname>
    <lastname>yin fong</lastname>
    <nickname>fong fong</nickname>
    <salary>200000</salary>
</staff>
</company>
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;

public class ReadXMLFile {

   public static void main(String argv[]) {

       try {
        File fXmlFile = new File("/Users/mkyong/staff.xml");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile); 
        //optional, but recommended
        //read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
        doc.getDocumentElement().normalize(); 
        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
        NodeList nList = doc.getElementsByTagName("staff");
        System.out.println("----------------------------");

            for (int temp = 0; temp < nList.getLength(); temp++) {
        Node nNode = nList.item(temp);
                System.out.println("\nCurrent Element :" + nNode.getNodeName());
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
        Element eElement = (Element) nNode; 
        System.out.println("Staff id : " + eElement.getAttribute("id"));
        System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
        System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
        System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
        System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());

            }
        }
       } catch (Exception e) {
        e.printStackTrace();
       }
    }

}