2013-06-30 31 views
-5

我想知道如何从XML文件中获取数据到我的Java代码。为此,我将创建我的XML文件,然后将编写一个Java代码。然后我会尝试从XML获取数据到Java。为此,一些映射必须在我的java代码中完成,否则我必须使用一些java API。请帮助你的知识或为我提供一些学习链接!如何从XML获取数据到Java

+0

什么阻止你使用某种类型的数据库用于这一目的?您可以使用例如Derby嵌入式数据库。 –

回答

3

您可以使用内置的SAX或DOM解析器读取XML中的字符串,并使用parse it

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

您的选择。但你需要做一些谷歌搜索和学习。

0

您还可以使用Spring的Jaxb2Marshaller。首先,你需要在你指定的类Spring上下文被绑定为编组,并在XML定义的模式来创建Jaxb2Marshaller豆:

<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> 

在你的代码,获取字符串XML和使用编组来解组对象。例如:

@Autowire 
private Jaxb2Marshaller marshaller; 

...

final Employee employee = (Employee) marshaller.unmarshal(new StreamSource(new StringReader(xmlString))); 
0

您可以使用DOM XML分析器(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> 

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

}