2007年7月18日 星期三

如何使用Java與Delphi控制XML檔案

讀取XML: Java

































項目



控制內容



Syntax



1



使用之外部API



org.jdom.*, javax.xml.rpc.*



2



讀取XML檔案



SAXBuilder builder = new SAXBuilder(false);


Document document = builder.build(file);



3



取得XML檔案之根節點



Element rootElement = document.getRootElement();



4



取得根節點有多少子節點



List elementList = rootElement.getChildren();



5



取得根節點之屬性



List attributes = rootElement.getAttributes();



6



取得第n個屬性之屬性名稱及屬性值



Attribute attribute = (Attribute)attributes.get(n);


屬性名稱: attribute.getName();


屬性值: attribute.getValue();



7



取得根節點第n個子節點之名稱及資料值



Element element = (Element)elementList.get(n);


List nodeList = element.getChildren();


for ( int index = 0; index < nodeList.size(); index++ ) {


Element node = (Element)nodeList.get(index);


node.getName();//節點名稱


node.getText();//節點資料值


}






產生XML: Java



產出結果








洪鋕鋒



Tainan


06-5051888


702


Taiwan






import java.io.FileOutputStream;


import org.jdom.*;


import org.jdom.output.XMLOutputter;


import org.jdom.output.Format;



Element rootElement = new Element("addressbook"); //產生根節點


Element nameElement = new Element("name"); //產生第一個子節點


nameElement.setAttribute("age", "30"); //為第一個子節點新增一個屬性,並設定資料值


nameElement.addContent("洪鋕鋒"); //設定第一個子節點之內容


rootElement.addContent(nameElement); //將第一個子節點與根節點建立關係



Element addressElement = new Element("address");


addressElement.addContent(" Tainan ");


rootElement.addContent(addressElement);



Element telephoneElement = new Element("telephone");


telephoneElement.addContent("06-5051888");


rootElement.addContent(telephoneElement);



Element zipElement = new Element("zip");


zipElement.addContent("702");


rootElement.addContent(zipElement);



Element countryElement = new Element("country");


countryElement.addContent(" Taiwan ");


rootElement.addContent(countryElement);



Document document = new Document(rootElement); //以根節點為主,建立一個Document


FileOutputStream output = new FileOutputStream(outputFileName); //建立輸出內容之檔案


try {


XMLOutputter outputter = new XMLOutputter(); //建立一個XML檔案輸出器


Format xmlFormat = outputter.getFormat(); //取得該檔案輸出器之內容格式化工具


xmlFormat.setEncoding("Big5"); //設定該XML檔案之編碼


xmlFormat.setLineSeparator("\r\n"); //設定該XML內容每一行之間隔符號


xmlFormat.setIndent(" "); //設定內縮字元


outputter.setFormat(xmlFormat); //設定檔案之格式化工具


outputter.output(document, output); //輸出內容


} finally {


output.close(); //關閉輸出檔案


}




讀取XML: Delphi




































項目



控制內容



Syntax



1



使用之外部API



XMLDoc



2



讀取XML檔案



var


xmlDocument: TXMLDocument;


xmlDocument := TXMLDocument.Create('c:\unpackingCarriers.xml');



3



取得XML檔案之根節點



Element rootElement = document.getRootElement();



4



取得根節點有多少子節點



List elementList = rootElement.getChildren();



5



取得根節點之屬性



List attributes = rootElement.getAttributes();



6



取得第n個屬性之屬性名稱及屬性值



Attribute attribute = (Attribute)attributes.get(n);


屬性名稱: attribute.getName();


屬性值: attribute.getValue();



7



取得根節點第n個子節點之名稱及資料值



Element element = (Element)elementList.get(n);


List nodeList = element.getChildren();


for ( int index = 0; index < nodeList.size(); index++ ) {


Element node = (Element)nodeList.get(index);


node.getName();//節點名稱


node.getText();//節點資料值


}






沒有留言: