因爲學校網站任務需要,我花了半天的時間完成了ReadFromXML 小程序,(太菜了,很簡單的程序花了這麼久~_~)。
其實主要是踩了好幾個坑,首先是選擇方法,花了一些時間,因爲有四種方法,(點擊鏈接可以找到,我就不一一介紹了),後來選擇了dom4j的方法。這個需要下載一個jar包,dom4j,點擊這裏下載。
第二個坑是代碼的坑,因爲沒有讀懂,沒有理解hasnext 的意思,其實是父類中是否有子類的意思而不是,後面有沒有代碼(好像是這樣,有錯誤希望指正。)
第三個坑是讀CDATA的時候,就是XML的註釋,一直不能成功,以爲是XML直接將CDATA註釋掉了,其實並不是,問題是處在了標籤哪裏,如圖
這裏的標籤是<dc:creator></dc:creator>這個是不對的,或者說java中不能讀取,讀取後會顯示null,進行修改,如圖
這樣,就可以了。這個我花了好久時間研究,一直以爲是CDATA註釋的原因,其實不是!!
最後是代碼:
package kim.tools;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.io.Writer;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
*
* @author jyh Dom4j 生成XML文檔與解析XML文檔
*/
public class ReadTools {
private String article="";
public static void main(String args[]) {
ReadTools dd = new ReadTools();
dd.parserXml("test.xml"); // 讀取xml
}
public void parserXml(String fileName) {
File inputXml = new File(fileName);
//SAXReader 用於讀XML
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(inputXml);
Element Article = document.getRootElement();
Element Comment =document.getRootElement();
System.out.println("1");
//找到XML中channel的結點得到他的子節點
Article=(Element) Article.elementIterator("channel").next();
//遍歷子節點
for(Iterator r=Article.elementIterator("item");r.hasNext(); )
{
Article=(Element)r.next();
// System.out.println("標題:"+Article.elementText("title"));
// System.out.println("作者:"+Article.elementText("creator"));
article+=Article.elementText("title")+"\r\n\r\n";
article+=Article.elementText("creator")+"\r\n\r\n";
//獲取Comment的結點值
Iterator l=Article.elementIterator("comment");
if(l.hasNext())
{
Comment=(Element) l.next();
// System.out.println("內容:"+Comment.elementText("content"));
article+=Comment.elementText("content")+"\r\n\r\n";
}
}
SaveThefile( article+"@ReadfromXML\r\n @author kim_yhow\r\n ");
} catch (DocumentException e) {
System.out.println(e.getMessage());
}
}
private void SaveThefile(String string) {
try {
File file=new File("Comment.txt");
PrintStream ps = new PrintStream(new FileOutputStream(file));
ps.println(string);
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(string);
}
}