欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
JDOM 介紹及使用指南
JDOM 介紹及使用指南
loveofgod 原創(chuàng )  (參與分:8605,專(zhuān)家分:1915)   發(fā)表:2006-07-18 16:41   版本:1.0   閱讀:172

一、JDOM 簡(jiǎn)介
JDOM是一個(gè)開(kāi)源項目,它基于樹(shù)型結構,利用純JAVA的技術(shù)對XML文檔實(shí)現解析、生成、序列化以及多種操作。
JDOM 直接為JAVA編程服務(wù)。它利用更為強有力的JAVA語(yǔ)言的諸多特性(方法重載、集合概念以及映射),把SAX和DOM的功能有效地結合起來(lái)。
在使用設計上盡可能地隱藏原來(lái)使用XML過(guò)程中的復雜性。利用JDOM處理XML文檔將是一件輕松、簡(jiǎn)單的事。
JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter開(kāi)發(fā)出來(lái),以彌補DOM及SAX在實(shí)際應用當中的不足之處。
這些不足之處主要在于SAX沒(méi)有文檔修改、隨機訪(fǎng)問(wèn)以及輸出的功能,而對于DOM來(lái)說(shuō),JAVA程序員在使用時(shí)來(lái)用起來(lái)總覺(jué)得不太方便。
DOM的缺點(diǎn)主要是來(lái)自于由于Dom是一個(gè)接口定義語(yǔ)言(IDL),它的任務(wù)是在不同語(yǔ)言實(shí)現中的一個(gè)最低的通用標準,并不是為JAVA特別設計的。JDOM的最新版本為JDOM Beta 9。最近JDOM被收錄到JSR-102內,這標志著(zhù)JDOM成為了JAVA平臺組成的一部分。


二、JDOM 包概覽
JDOM是由以下幾個(gè)包組成的
org.JDOM
org.JDOM.input
org.JDOM.output
org.JDOM.adapters
org.JDOM.transform

三、JDOM 類(lèi)說(shuō)明

org.JDOM
這個(gè)包里的類(lèi)是你解析xml文件后所要用到的所有數據類(lèi)型。
Attribute
CDATA
Coment
DocType
Document
Element
EntityRef
Namespace
ProscessingInstruction
Text

org.JDOM.transform
在涉及xslt格式轉換時(shí)應使用下面的2個(gè)類(lèi)
JDOMSource
JDOMResult

org.JDOM.input
輸入類(lèi),一般用于文檔的創(chuàng )建工作
SAXBuilder
DOMBuilder
ResultSetBuilder

org.JDOM.output
輸出類(lèi),用于文檔轉換輸出
XMLOutputter
SAXOutputter
DomOutputter
JTreeOutputter

使用前注意事項:
1.JDOM對于JAXP 以及 TRax 的支持
JDOM 支持JAXP1.1:你可以在程序中使用任何的parser工具類(lèi),默認情況下是JAXP的parser。
制定特別的parser可用如下形式
SAXBuilder parser 
= new SAXBuilder("org.apache.crimson.parser.XMLReaderImpl");
Document doc = parser.build("http://www.cafeconleche.org/");
// work with the document...
JDOM也支持TRaX:XSLT可通過(guò)JDOMSource以及JDOMResult類(lèi)來(lái)轉換(參見(jiàn)以后章節)
2.注意在JDOM里文檔(Document)類(lèi)由org.JDOM.Document 來(lái)表示。這要與org.w3c.dom中的Document區別開(kāi),這2種格式如何轉換在后面會(huì )說(shuō)明。
以下如無(wú)特指均指JDOM里的Document。


四、JDOM主要使用方法
1.Ducument類(lèi)
(1)Document的操作方法:
Element root = new Element("GREETING");
Document doc = new Document(root);
root.setText("Hello JDOM!");
或者簡(jiǎn)單的使用Document doc = new Document(new Element("GREETING").setText("Hello JDOM!t"));

這點(diǎn)和DOM不同。Dom則需要更為復雜的代碼,如下:
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
DocumentBuilder builder =factory.newDocumentBuilder();
Document doc = builder.newDocument();
Element root =doc.createElement("root");
Text text = doc.createText("This is the root");
root.appendChild(text);
doc.appendChild(root);


注意事項:JDOM不允許同一個(gè)節點(diǎn)同時(shí)被2個(gè)或多個(gè)文檔相關(guān)聯(lián),要在第2個(gè)文檔中使用原來(lái)老文檔中的節點(diǎn)的話(huà)。首先需要使用detach()把這個(gè)節點(diǎn)分開(kāi)來(lái)。

(2)從文件、流、系統ID、URL得到Document對象:
DOMBuilder builder = new DOMBuilder();
Document doc = builder.build(new File("jdom_test.xml"));

SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(url);
在新版本中DOMBuilder 已經(jīng)Deprecated掉 DOMBuilder.builder(url),用SAX效率會(huì )比較快。

這里舉一個(gè)小例子,為了簡(jiǎn)單起見(jiàn),使用String對象直接作為xml數據源:

public jdomTest() {
  String textXml = null;
  textXml = "<note>";
  textXml = textXml +
    "<to>aaa</to><from>bbb</from><heading>ccc</heading><body>ddd</body>";
  textXml = textXml + "</note>";
  SAXBuilder builder = new SAXBuilder();
  Document doc = null;
  Reader in= new StringReader(textXml);
  try {
    doc = builder.build(in);
    Element root = doc.getRootElement();
    List ls = root.getChildren();//注意此處取出的是root節點(diǎn)下面的一層的Element集合
    for (Iterator iter = ls.iterator(); iter.hasNext(); ) {
    Element el = (Element) iter.next();
    if(el.getName().equals("to")){
      System.out.println(el.getText());
    }
    }
  }
  catch (IOException ex) {
    ex.printStackTrace();
  }
  catch (JDOMException ex) {
    ex.printStackTrace();
  }
}

很簡(jiǎn)單把。


(3)DOM的document和JDOM的Document之間的相互轉換使用方法,簡(jiǎn)單!
DOMBuilder builder = new DOMBuilder();
org.jdom.Document jdomDocument = builder.build(domDocument);
// work with the JDOM document…

DOMOutputter converter = new DOMOutputter();
org.w3c.dom.Document domDocument = converter.output(jdomDocument);
// work with the DOM document…

2.XML文檔輸出
XMLOutPutter類(lèi):
JDOM的輸出非常靈活,支持很多種io格式以及風(fēng)格的輸出
Document doc = new Document(...);
XMLOutputter outp = new XMLOutputter();
// Raw output
outp.output(doc, fileOutputStream);
// Compressed output
outp.setTextTrim(true);
outp.output(doc, socket.getOutputStream());
// Pretty output
outp.setIndent(" ");
outp.setNewlines(true);
outp.output(doc, System.out);
......
詳細請參閱最新的JDOM API手冊


3.Element 類(lèi):
(1)瀏覽Element樹(shù)
//獲得根元素element
Element root = doc.getRootElement();
// 獲得所有子元素的一個(gè)list
List allChildren = root.getChildren();
// 獲得指定名稱(chēng)子元素的list
List namedChildren = root.getChildren("name");
//獲得指定名稱(chēng)的第一個(gè)子元素
Element child = root.getChild("name");
(這里的List是java.util.List)

JDOM給了我們很多很靈活的使用方法來(lái)管理子元素
List allChildren = root.getChildren();
// 刪除第四個(gè)子元素
allChildren.remove(3);
// 刪除叫“jack”的子元素
allChildren.removeAll(root.getChildren("jack"));

root.removeChildren("jack"); // 便捷寫(xiě)法
// 加入
allChildren.add(new Element("jane"));

root.addContent(new Element("jane")); // 便捷寫(xiě)法
allChildren.add(0, new Element("first"));


(2)移動(dòng)Elements:
在JDOM里很簡(jiǎn)單
Element movable = new Element("movable");
parent1.addContent(movable); // place
parent1.removeContent(movable); // remove
parent2.addContent(movable); // add

在Dom里
Element movable = doc1.createElement("movable");
parent1.appendChild(movable); // place
parent1.removeChild(movable); // remove
parent2.appendChild(movable); // 出錯!

補充:
糾錯性
JDOM的Element構造函數(以及它的其他函數)會(huì )檢查element是否合法。
而它的add/remove方法會(huì )檢查樹(shù)結構,檢查內容如下:
1.在任何樹(shù)中是否有回環(huán)節點(diǎn)
2.是否只有一個(gè)根節點(diǎn)
3.是否有一致的命名空間(Namespaces)



(3)Element的text內容讀取
<description>
A cool demo
</description>

// The text is directly available
// Returns "\n A cool demo\n"
String desc = element.getText();

// There‘s a convenient shortcut
// Returns "A cool demo"
String desc = element.getTextTrim();

(4)Elment內容修改
element.setText("A new description");
3.可正確解釋特殊字符
element.setText("<xml> content");
4.CDATA的數據寫(xiě)入、讀出
element.addContent(new CDATA("<xml> content"));
String noDifference = element.getText();

混合內容
element可能包含很多種內容,比如說(shuō)

<table>
<!-- Some comment -->
Some text
<tr>Some child element</tr>
</table>

取table的子元素tr
String text = table.getTextTrim();
Element tr = table.getChild("tr");

也可使用另外一個(gè)比較簡(jiǎn)單的方法
List mixedCo = table.getContent();
Iterator itr = mixedCo.iterator();
while (itr.hasNext()) {
Object o = i.next();
if (o instanceof Comment) {
...
}
// 這里可以寫(xiě)成Comment, Element, Text, CDATA,ProcessingInstruction, 或者是EntityRef的類(lèi)型
}
// 現在移除Comment,注意這里游標應為1。這是由于回車(chē)鍵也被解析成Text類(lèi)的緣故,所以Comment項應為1。
mixedCo.remove(1);



4.Attribute類(lèi)
<table width="100%" border="0"> </table>
//獲得attribute
String width = table.getAttributeValue("width");
int border = table.getAttribute("width").getIntValue();
//設置attribute
table.setAttribute("vspace", "0");
// 刪除一個(gè)或全部attribute
table.removeAttribute("vspace");
table.getAttributes().clear();



5.處理指令(Processing Instructions)操作
一個(gè)Pls的例子
<?br?>
<?cocoon-process type="xslt"?>
      |     |
      |     |
    目標   數據

處理目標名稱(chēng)(Target)
String target = pi.getTarget();
獲得所有數據(data),在目標(target)以后的所有數據都會(huì )被返回。
String data = pi.getData();
獲得指定屬性的數據
String type = pi.getValue("type");
獲得所有屬性的名稱(chēng)
List ls = pi.getNames();

6.命名空間操作
<xhtml:html 
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xhtml:title>Home Page</xhtml:title>
</xhtml:html>

Namespace xhtml = Namespace.getNamespace("xhtml", "http://www.w3.org/1999/xhtml");
List kids = html.getChildren("title", xhtml);
Element kid = html.getChild("title", xhtml);
kid.addContent(new Element("table", xhtml));

7.XSLT格式轉換
使用以下函數可對XSLT轉換
最后如果你需要使用w3c的Document則需要轉換一下。
public static Document transform(String stylesheet,Document in)
                          throws JDOMException {
  try {
    Transformer transformer = TransformerFactory.newInstance()
                  .newTransformer(new StreamSource(stylesheet));
    JDOMResult out = new JDOMResult();
    transformer.transform(new JDOMSource(in), out);
    return out.getDeocument();
  }
  catch (TransformerException e) {
    throw new JDOMException("XSLT Trandformation failed", e);
  }
  }

參考書(shū)目:

1.JDOM官方網(wǎng)站: http://www.jdom.org

2.<<Processing XML with Java>> Elliotte Rusty Harold 2002

3.JDOM API Documentation

4.<<JDOM Makes XML Easy>>Jason Hunter Co-Creator JDOM Project

5.WSDP Tutorial
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java程序員從笨鳥(niǎo)到菜鳥(niǎo)之(二十七)XML之Jdom和DOM4J解析
CnJSP
jdom
JDom或Dom4j輸出UTF-8的XML完美解決
dom4j的一般應用 - bicashy - JavaEye技術(shù)網(wǎng)站
Document的應用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久