1
我對Java和Xml解析非常新穎。我的要求是獲取一個XML文件,並使用java以表格和列格式將XML文件的數據存儲在數據庫中。我在谷歌嘗試爲它獲得正確的解決方案。但我很無奈。直到現在我所做的是,我可以動態獲取XML數據並存儲標記名稱或值。但我的要求是隻將標籤名稱作爲列名稱和與行格式中的特定列相關的數據,任何人都可以更正我的代碼。使用Java檢索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
+1 @sreehari:的確是getTextValue helper方法是至關重要的!但我不應該說這是非常簡單的,因爲需要實現這個非常普遍的需求的複雜性XD – helios
嗨,這不是我想要的,通過動態我需要創建列名稱,而不是一個接一個我想在列和行格式 – Navyah