如何像:
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<title text=\"title1\">\n" +
" <comment id=\"comment1\">\n" +
" <data> abcd </data>\n" +
" <data> efgh </data>\n" +
" </comment>\n" +
" <comment id=\"comment2\">\n" +
" <data> ijkl </data>\n" +
" <data> mnop </data>\n" +
" <data> qrst </data>\n" +
" </comment>\n" +
"</title>\n";
try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xml)));
DocumentTraversal traversal = (DocumentTraversal) doc;
NodeIterator iterator = traversal.createNodeIterator(
doc.getDocumentElement(), NodeFilter.SHOW_ELEMENT, null, true);
for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {
//System.out.println("Element: " + ((Element) n).getTagName());
String tagname = ((Element) n).getTagName();
if(tagname.equals("title")) {
System.out.println("text=" + ((Element)n).getAttribute("text"));
}
else if(tagname.equals("comment")) {
System.out.println("id=" + ((Element)n).getAttribute("id"));
}
else if(tagname.equals("data")) {
System.out.println("data=" + ((Element)n).getTextContent());
}
else {
System.out.println("Unhandled element");
}
}
} catch (Exception e) {
e.printStackTrace();
}
好的,所以你不滿意,這個怎麼樣:
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<title text=\"title1\">\n" +
" <comment id=\"comment1\">\n" +
" <data> abcd </data>\n" +
" <data> efgh </data>\n" +
" </comment>\n" +
" <comment id=\"comment2\">\n" +
" <data> ijkl </data>\n" +
" <data> mnop </data>\n" +
" <data> qrst </data>\n" +
" </comment>\n" +
"</title>\n";
try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xml)));
DocumentTraversal traversal = (DocumentTraversal) doc;
NodeIterator iterator = traversal.createNodeIterator(
doc.getDocumentElement(), NodeFilter.SHOW_ELEMENT, null, true);
for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {
//System.out.println("Element: " + ((Element) n).getTagName());
String tagname = ((Element) n).getTagName();
NamedNodeMap map = ((Element)n).getAttributes();
if(map.getLength() > 0) {
for(int i=0; i<map.getLength(); i++) {
Node node = map.item(i);
System.out.println(node.getNodeName() + "=" + node.getNodeValue());
}
}
else {
System.out.println(tagname + "=" + ((Element)n).getTextContent());
}
}
} catch (Exception e) {
e.printStackTrace();
}
我很高興!您可能想要使用Java DOM API。 http://java.sun.com/developer/codesamples/xml.html#dom – adatapost
爲什麼不嘗試使用XMLBean,而我剛剛看到您在最近提出的問題中詢問過有關XPath的問題?沒有上下文的名稱值對不能用xml表示數據。 –
@Clark這是真的,但我不只想獲得(名稱,值)對,而是以這種方式進行遍歷,並且任何時候遇到這些對時,我都會做一些更多的處理... – Larry