我用以下代码把一个数据库文件生成XML文件
public static void main(String[] args) {
Connection con = ConDB.Con();
PreparedStatement pst = null;
ResultSet rs = null;
String colName;
try {
pst = con.prepareStatement("SELECT * FROM master");
rs = pst.executeQuery();
Document document = new Document(new Element("根元素")); //创建文档,并设根元素
ResultSetMetaData rsmd = rs.getMetaData(); //获取字段名,返回ResultSetMetaData对像
int numberOfColumns = rsmd.getColumnCount();
while (rs.next()) {
Element element0 = new Element("users"); //创建元素 生成JDOM树
document.getRootElement().addContent(element0);
// Element element2 = new Element("userphone");
// element0.addContent(element2);
for (int i = 1; i <= numberOfColumns; i++) {
try {
colName = new String(rs.getString(i));
//构造元素节点和文本节点
Element element = new Element(rsmd.getColumnName(i)).setText(colName);
element0.addContent(element);
} catch (Exception ex1) {
}
}
}
//org.jdom.output.XMLOutputter
XMLOutputter outp = new XMLOutputter(Format.getPrettyFormat());
try {
//生成XML文件路径
outp.output(document,new FileOutputStream("aa.xml"));
} catch (IOException ex2) {
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
然后再用以下代码读取XML里面的元素
public static void main(String[] args) {
Connection con = ConDB.Con();
PreparedStatement pst = null;
try {
BufferedReader br = new BufferedReader(new FileReader(
"aaa.xml"));
DOMParser parser = new DOMParser();
parser.parse(new InputSource(br));
org.w3c.dom.Document doc = parser.getDocument();
org.w3c.dom.NodeList nl = doc.getElementsByTagName("*");
for (int i = 0; i < nl.getLength(); i++) {
Node n = nl.item(i);
System.out.println(n.getNodeName());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
他报一个异常
org.xml.sax.SAXParseException: Element type "鏍瑰厓绱" must be followed by either attribute specifications, ">" or "/>".
at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1213)
at org.apache.xerces.framework.XMLDocumentScanner.reportFatalXMLError(XMLDocumentScanner.java:579)
at org.apache.xerces.framework.XMLDocumentScanner.abortMarkup(XMLDocumentScanner.java:628)
at org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1800)
at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:949)
at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
at servlet.XMLInsetDB.main(XMLInsetDB.java:27)读XML文件这个类是没有问题的
其他的XML文件也读得出来值
就是用类生成出来的XML文件就读不出来
生成出来的XML数据绝对是规范的
也看不出来有啥问题得
晕死
高手帮帮忙
讲解一哈
谢了
public static void main(String[] args) {
Connection con = ConDB.Con();
PreparedStatement pst = null;
ResultSet rs = null;
String colName;
try {
pst = con.prepareStatement("SELECT * FROM master");
rs = pst.executeQuery();
Document document = new Document(new Element("根元素")); //创建文档,并设根元素
ResultSetMetaData rsmd = rs.getMetaData(); //获取字段名,返回ResultSetMetaData对像
int numberOfColumns = rsmd.getColumnCount();
while (rs.next()) {
Element element0 = new Element("users"); //创建元素 生成JDOM树
document.getRootElement().addContent(element0);
// Element element2 = new Element("userphone");
// element0.addContent(element2);
for (int i = 1; i <= numberOfColumns; i++) {
try {
colName = new String(rs.getString(i));
//构造元素节点和文本节点
Element element = new Element(rsmd.getColumnName(i)).setText(colName);
element0.addContent(element);
} catch (Exception ex1) {
}
}
}
//org.jdom.output.XMLOutputter
XMLOutputter outp = new XMLOutputter(Format.getPrettyFormat());
try {
//生成XML文件路径
outp.output(document,new FileOutputStream("aa.xml"));
} catch (IOException ex2) {
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
然后再用以下代码读取XML里面的元素
public static void main(String[] args) {
Connection con = ConDB.Con();
PreparedStatement pst = null;
try {
BufferedReader br = new BufferedReader(new FileReader(
"aaa.xml"));
DOMParser parser = new DOMParser();
parser.parse(new InputSource(br));
org.w3c.dom.Document doc = parser.getDocument();
org.w3c.dom.NodeList nl = doc.getElementsByTagName("*");
for (int i = 0; i < nl.getLength(); i++) {
Node n = nl.item(i);
System.out.println(n.getNodeName());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
他报一个异常
org.xml.sax.SAXParseException: Element type "鏍瑰厓绱" must be followed by either attribute specifications, ">" or "/>".
at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1213)
at org.apache.xerces.framework.XMLDocumentScanner.reportFatalXMLError(XMLDocumentScanner.java:579)
at org.apache.xerces.framework.XMLDocumentScanner.abortMarkup(XMLDocumentScanner.java:628)
at org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1800)
at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:949)
at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
at servlet.XMLInsetDB.main(XMLInsetDB.java:27)读XML文件这个类是没有问题的
其他的XML文件也读得出来值
就是用类生成出来的XML文件就读不出来
生成出来的XML数据绝对是规范的
也看不出来有啥问题得
晕死
高手帮帮忙
讲解一哈
谢了
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货