import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;public class XmlTest {
public static void main(String args[]) throws JDOMException, IOException {
SAXBuilder builder = new SAXBuilder();
Document root = builder.build(new File("d:/t.txt"));
Element shujia = root.getRootElement();
List<Map<String,String>> shuList = new ArrayList<Map<String,String>>();
for(Object e : shujia.getChildren()){
Element shu = (Element) e;
parseShu(shu,shuList);
}
System.out.println(shuList);
} private static void parseShu(Element shu, List<Map<String, String>> shuList) {
if(shu == null || !shu.getName().equals("书"))
return;
HashMap<String,String> map = new HashMap<String, String>();
for(Object e : shu.getChildren()){
Element field = (Element) e;
map.put(field.getName(), field.getText());
}
shuList.add(map);
}
}解析结果
[{书名=xml基础 , 作者=张明 , 售价=20.00元 }, {书名=java高级教程 , 作者=张明行 , 售价=23.50元 , 出版社=人教社 }]
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;public class XmlTest {
public static void main(String args[]) throws JDOMException, IOException {
SAXBuilder builder = new SAXBuilder();
Document root = builder.build(new File("d:/t.txt"));
Element shujia = root.getRootElement();
List<Map<String,String>> shuList = new ArrayList<Map<String,String>>();
for(Object e : shujia.getChildren()){
Element shu = (Element) e;
parseShu(shu,shuList);
}
System.out.println(shuList);
} private static void parseShu(Element shu, List<Map<String, String>> shuList) {
if(shu == null || !shu.getName().equals("书"))
return;
HashMap<String,String> map = new HashMap<String, String>();
for(Object e : shu.getChildren()){
Element field = (Element) e;
map.put(field.getName(), field.getText());
}
shuList.add(map);
}
}解析结果
[{书名=xml基础 , 作者=张明 , 售价=20.00元 }, {书名=java高级教程 , 作者=张明行 , 售价=23.50元 , 出版社=人教社 }]
解决方案 »
- 帮忙解决一个算法(多少分都可以)
- asking for urgent help about my UI's problem
- 一个类允许有多个实例,但对于每个不同的实例,如果已经存在,就不能再创建.就好比QQ聊天发送信息的界面,与某好友的聊天窗口若已经打开,双击
- 求助:这个while循环怎么运行了这么多次?
- java数组的索引可以是字符串么
- 请教一个嵌套问题
- 线程对象为何可以重复命名
- 请问下面的程序为什么编译不能通过呢?
- 请问怎么样才可以更改一个java程序的主窗口图标呢?就是那个咖啡杯?
- 如何用JAVA实现手机号码的余额查询
- MultipartFormDataRequest.CFUPARSER
- 如何让一个界面在运行4秒后自动关闭
运行3楼的代码报错:Exception in thread "main" org.jdom.input.JDOMParseException: Error on line 1 of document file:/d:/t.txt: White space is required between the processing instruction target and data.
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:465)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:810)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:789)
at XmlTest.main(XmlTest.java:16)
Caused by: org.xml.sax.SAXParseException: White space is required between the processing instruction target and data.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1411)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanPIData(XMLScanner.java:712)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanPIData(XMLDocumentFragmentScannerImpl.java:1016)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$XMLDeclDriver.next(XMLDocumentScannerImpl.java:807)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:452)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
... 3 more
Caused by: org.xml.sax.SAXParseException: White space is required between the processing instruction target and data.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1411)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanPIData(XMLScanner.java:712)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanPIData(XMLDocumentFragmentScannerImpl.java:1016)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$XMLDeclDriver.next(XMLDocumentScannerImpl.java:807)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:452)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:810)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:789)
at XmlTest.main(XmlTest.java:16)
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
...public static Document parse(InputStream is) {
// Initiate DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// To get a validating parser
factory.setValidating(false);
// To get one that understands namespaces
factory.setNamespaceAware(true);
try {
// Get DocumentBuilder
DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse( is);
} catch (SAXParseException spe) {
// Error generated by the parser
...
} catch (SAXException sxe) {
// Error generated during parsing
...
} catch (ParserConfigurationException pce) {
// Parser with specified options can't be built
...
} catch (IOException ioe) {
// I/O error
...
}
return null;
}
public static Document parse(File file) throws FileNotFoundException {
return parse(new FileInputStream(file));
} public static Document parse(String xmlString) {
return parse(new java.io.ByteArrayInputStream(xmlString.getBytes()));
}