我可以用SAXParser
和擴展DefaultHandler
類的方法建議。
你可以使用一些boolean
s到保持跟蹤哪些標籤的你在。
DefaultHandler
會讓你知道,當你在用startElement()
方法的特定標籤。然後,將通過characters()
方法向您提供標籤的內容,最後您將通過endElement()
方法通知標籤的結尾。
一旦您收到<row>
的結束通知,您可以獲取剛剛保存的標籤的內容並從中創建一個文件。
看着你的榜樣,你只需要一對夫婦的布爾值 - boolean inRow
和boolean inName
所以這不應該是一個艱鉅的任務=)
Example from Mykong(我離開了實際的代碼,你都必須做。你自己這是相當簡單):
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ReadXMLFile {
public static void main(String argv[]) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean bfname = false;
boolean blname = false;
boolean bnname = false;
boolean bsalary = false;
public void startElement(String uri, String localName,String qName,
Attributes attributes) throws SAXException {
System.out.println("Start Element :" + qName);
if (qName.equalsIgnoreCase("FIRSTNAME")) {
bfname = true;
}
if (qName.equalsIgnoreCase("LASTNAME")) {
blname = true;
}
if (qName.equalsIgnoreCase("NICKNAME")) {
bnname = true;
}
if (qName.equalsIgnoreCase("SALARY")) {
bsalary = true;
}
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
System.out.println("End Element :" + qName);
}
public void characters(char ch[], int start, int length) throws SAXException {
if (bfname) {
System.out.println("First Name : " + new String(ch, start, length));
bfname = false;
}
if (blname) {
System.out.println("Last Name : " + new String(ch, start, length));
blname = false;
}
if (bnname) {
System.out.println("Nick Name : " + new String(ch, start, length));
bnname = false;
}
if (bsalary) {
System.out.println("Salary : " + new String(ch, start, length));
bsalary = false;
}
}
};
saxParser.parse("c:\\file.xml", handler);
} catch (Exception e) {
e.printStackTrace();
}
}
}
該鏈接可能有幫助 http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/ –
Kamlesh是正確的...使用JDom .. – TheLostMind
@KamleshArya'SAXParser'? =) –