国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

JavaDom解析的三個實例

2019-11-14 15:01:18
字體:
來源:轉載
供稿:網友

概述

Dom解析的文章已經爛大街了。在這里,只舉三個場景下如何編碼的例子:

  • xml內有多個同名節(jié)點,獲取這多個同名節(jié)點
  • 已獲取到某個節(jié)點,生成這個節(jié)點的xml描述
  • 修改節(jié)點某屬性的值

詳細的講解看官請自行百度。
dom4j包下載鏈接為:點擊下載dom4j

獲取多個同名節(jié)點

  • xml實例

    <model name="model" >    <Operator name="kafkaInput">        <parameter  name="inputTopicName"  value="department1_tn1" />    </operator>    <operator name="addFielduuid">        <parameter  name="parameter1" value="p1" />    </operator>    <operator name="kafkaOutput">        <parameter  name="outTopicName" value="department1_tn1" />    </operator>    <connect from="kafkaInput.outport1" to="addFielduuid.inport1" />    <connect from="addFielduuid.outport1" to="kafkaOutput.inport1" />    <ouput path="/home" /></model>
  • 如上xml實例中,model下有3個operator節(jié)點
  • 獲取多個同名節(jié)點不僅需要dom4j包,還需要Jaxen包。
  • Jaxen包下載鏈接為:點擊下載Jaxen
  • 獲取這三個節(jié)點的代碼為:

    public static void parsingSameNameNode(String xmlPath) {File file = new File(argsPath);// 創(chuàng)建saxReader對象SAXReader reader = new SAXReader();// 通過read方法讀取一個文件 轉換成Document對象Document document;try {    document = reader.read(file);    List<Element> operators = document.selectNodes("/model/operator");    for(Element operator:operators){        //do something...    }} catch (DocumentException e) {    e.PRintStackTrace();}}
    • 通過接口selectNodes(String arg0)
    • 接口參數(shù)為:"/model/operator"。意思是:獲取model節(jié)點下所有的operator節(jié)點。Element可以理解為節(jié)點的信息
    • 注意解析前讀取xml內容、構建Document實例的代碼:

      File file = new File(argsPath);// 創(chuàng)建saxReader對象SAXReader reader = new SAXReader();// 通過read方法讀取一個文件 轉換成Document對象Document document;try {document = reader.read(file);//do something...} catch (DocumentException e) {e.printStackTrace();}

節(jié)點的xml描述

  • dom解析得到某節(jié)點,將節(jié)點轉為String,即節(jié)點的xml描述。
  • 將節(jié)點轉化為String格式,接口為asXML()。
  • 轉換代碼如下:

    // 獲取根節(jié)點元素對象Element rootNode = document.getRootElement();// 獲取context節(jié)點所有文字內容String context = rootNode.element("context").asXML();
  • 上面代碼邏輯為:
    • 根據(jù)document拿到dom樹的根節(jié)點rooNode
    • 獲取rootNode節(jié)點下的context節(jié)點
    • 使用asXML()接口,將節(jié)點轉化為String格式。

修改屬性值

  • 有兩種修改屬性值的方法
    • 先獲取到該屬性,使用屬性的接口setValue(),修改屬性值
    • 先獲取到該屬性所在節(jié)點,使用接口setAttributeValue()修改屬性值

使用屬性的setValue()接口,修改屬性值

  • 代碼邏輯為:
    • 獲取到該屬性所在節(jié)點
    • 獲取該節(jié)點的屬性,即要修改值的屬性
    • 屬性對象調用接口setValue(),接口參數(shù)為:屬性值
    • 例上面xml中,output節(jié)點的path屬性值修改為:/home/BYRans,代碼如下:

      Element rootNode = document.getRootElement();Element node = rootNode.element("/model/output")Attribute path = node.attribute("path");path.setValue("/home/BYRans");

使用節(jié)點的setAttributeValue接口,修改屬性值

  • 代碼邏輯為:
    • 獲取到該屬性所在節(jié)點
    • 節(jié)點對象調用接口使用節(jié)點的setAttributeValue(),接口參數(shù)為:屬性名和屬性值
    • 注意此接口已不推薦使用,setAttributeValue()
    • 例上面xml中,output節(jié)點的path屬性值修改為:/home/BYRans,代碼如下:

      Element rootNode = document.getRootElement();Element node = rootNode.element("/model/output")node.setAttributeValue("path","/home/BYRans");

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 济源市| 芦山县| 广南县| 常熟市| 保山市| 鄂托克前旗| 广平县| 泰兴市| 淄博市| 林甸县| 邛崃市| 舒城县| 潼南县| 湘潭县| 峡江县| 新乡市| 西吉县| 丘北县| 昔阳县| 常州市| 沾化县| 常山县| 诏安县| 博爱县| 讷河市| 乐亭县| 行唐县| 天津市| 隆回县| 长沙县| 瑞金市| 镇巴县| 济源市| 元阳县| 华阴市| 灵石县| 类乌齐县| 文水县| 沈丘县| 上饶县| 景东|