我对 Java 和 Xml 解析非常陌生。我的要求是获取一个 xml 文件并使用 java 将 XML 文件的数据以表和列格式存储在数据库中。我尝试在谷歌中找到正确的解决方案。但我很无奈。到目前为止,我所做的是,我可以动态获取 xml 数据并存储标签名称或值。但是我的要求是仅将标记名称作为列名和与行格式中特定列相关的数据一次,任何人都可以更正我的代码。
<?xml version="1.0"?>
<company>
<staff>
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>100000</salary>
</staff>
<staff>
<firstname>low</firstname>
<lastname>yin fong</lastname>
<nickname>fong fong</nickname>
<salary>200000</salary>
</staff>
</company>
Java 代码
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
public class XmlData{
static public void main(String[] arg){
try {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter XML File Path: ");
String xmlFile = bf.readLine();
//Store the String into the File
File file = new File(xmlFile);
if(file.exists()){
// Create a factory
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
// Use the factory to create a builder
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(xmlFile);
Element docEle = doc.getDocumentElement();
System.out.println("Root element of the document: "+ docEle.getNodeName());
// Get a list of all elements in the document
NodeList list = doc.getElementsByTagName("*");
int totalElements = list.getLength();
System.out.println("XML Elements: " + totalElements);
for (int i=0; i<list.getLength(); i++)
{
// Get element
Element element = (Element)list.item(i);
String tag=element.getTagName();
String name=list.item(0).getChildNodes().item(0).getNodeValue();
System.out.println(name);
System.out.print(tag);
System.out.print(" ");
//System.out.println(element.getNodeName());
}
}
else{
System.out.print("File not found!");
}
}
catch (Exception e) {
System.exit(1);
}
}
}
此代码的输出:
company
staff
firstname
lastname
nickname
salary
staff
firstname
lastname
nickname
salary
预期输出:
FirstName, Lastname, nickname , salary //column
yong ,mook kim, mkyong , 100000 // rows
low ,yin fong, fong fong ,200000