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