1. 程式人生 > >Dom4j完整教程

Dom4j完整教程

Dom4j完整教程

 

目錄

1、DOM4J簡介

2、XML文件操作1

      2.1、讀取XML文件:

      2.2、獲取根節點

      2.3、. 新增一個節點以及其下的子節點與資料

      2.4、 寫入XML檔案

      2. 5、 遍歷xml節點

      2.6、建立xml檔案

      2.7、修改節點屬性

      2.8、刪除節點

2、XML文件操作2

       2.1、Document物件相關

          1、讀取XML檔案,獲得document物件.

          2、解析XML形式的文字,得到document物件.

          3、主動建立document物件.

       2.2、節點相關

          1、獲取文件的根節點.

          2、取得某節點的單個子節點.

          3.取得節點的文字

          4.取得某節點下指定名稱的所有節點並進行遍歷.

          5.對某節點下的所有子節點進行遍歷.

          6.在某節點下新增子節點.

          7.設定節點文字.

          8.刪除某節點.

          9.新增一個CDATA節點.

       2.3、屬性相關.

          1.取得節點的指定的屬性

          2.取得屬性的文字

          3.遍歷某節點的所有屬性

          4.設定某節點的屬性和文字.

          5.設定屬性的文字

          6.刪除某屬性

      2.4、將文件寫入XML檔案.

          1.文件中全為英文,不設定編碼,直接寫入.

          2.文件中含有中文,設定編碼格式再寫入.

      2.5、字串與XML的轉換

         1.將字串轉化為XML

         2.將文件或節點的XML轉化為字串.

   3、dom4j的事件處理模型涉及的類和介面:

      3.1、類:SAXReader

      3.2、介面ElementHandler

      3.3、Element類

      3.4、類DocumentHelper

4、通過xpath查詢指定的節點

       4.1、 xpath語法

          1、選取節點

          2、謂語(Predicates)

          3、選取未知節點

          4、選取若干路徑

          5、XPath 軸

          6、路徑

          7、XPath 運算子

 

1、DOM4J簡介

    DOM4J是 dom4j.org 出品的一個開源 XML 解析包。DOM4J應用於 Java 平臺,採用了 Java 集合框架並完全支援 DOM,SAX 和 JAXP。

    DOM4J 使用起來非常簡單。只要你瞭解基本的 XML-DOM 模型,就能使用。

    Dom:把整個文件作為一個物件。

  DOM4J 最大的特色是使用大量的介面。它的主要介面都在org.dom4j裡面定義:

Attribute

定義了 XML 的屬性。

Branch

指能夠包含子節點的節點。如XML元素(Element)和文件(Docuemnts)定義了一個公共的行為

CDATA

定義了 XML CDATA 區域

CharacterData

是一個標識介面,標識基於字元的節點。如CDATA,Comment, Text.

Comment

定義了 XML 註釋的行為

Document

定義了XML 文件

DocumentType

定義 XML DOCTYPE 宣告

Element

定義XML 元素

ElementHandler

定義了Element 物件的處理器

ElementPath

被 ElementHandler 使用,用於取得當前正在處理的路徑層次資訊

Entity

定義 XML entity

Node

為dom4j中所有的XML節點定義了多型行為

NodeFilter

定義了在dom4j 節點中產生的一個濾鏡或謂詞的行為(predicate)

ProcessingInstruction

定義 XML 處理指令

Text

定義 XML 文字節點

Visitor

用於實現 Visitor模式

XPath

在分析一個字串後會提供一個 XPath 表示式

介面之間的繼承關係如下:

interface java.lang.Cloneable

    interface org.dom4j.Node

           interface org.dom4j.Attribute

           interface org.dom4j.Branch

                  interface org.dom4j.Document

                  interface org.dom4j.Element

           interface org.dom4j.CharacterData

                  interface org.dom4j.CDATA

                  interface org.dom4j.Comment

                  interface org.dom4j.Text

           interface org.dom4j.DocumentType

           interface org.dom4j.Entity

           interface org.dom4j.ProcessingInstruction

2、XML文件操作1

2.1、讀取XML文件:

     讀寫XML文件主要依賴於org.dom4j.io包,有DOMReader和SAXReader兩種方式。因為利用了相同的介面,它們的呼叫方式是一樣的。

 

 

[java] view plain copy

 

  1. public static Document load(String filename) {  
  2.     Document document = null;  
  3.     try {  
  4.         SAXReader saxReader = new SAXReader();  
  5.         document = saxReader.read(new File(filename)); // 讀取XML檔案,獲得document物件  
  6.     } catch (Exception ex) {  
  7.         ex.printStackTrace();  
  8.     }  
  9.     return document;  
  10. }  
  11.   
  12. public static Document load(URL url) {  
  13.     Document document = null;  
  14.     try {  
  15.         SAXReader saxReader = new SAXReader();  
  16.         document = saxReader.read(url); // 讀取XML檔案,獲得document物件  
  17.     } catch (Exception ex) {  
  18.         ex.printStackTrace();  
  19.     }  
  20.     return document;  
  21. }  

 

 

//讀取指定的xml檔案之後返回一個Document物件,這個物件代表了整個XML文件,用於各種Dom運算。執照XML檔案頭所定義的編碼來轉換。

2.2、獲取根節點

根節點是xml分析的開始,任何xml分析工作都需要從根開始

 

[java] view plain copy

 

  1. Xml xml = new Xml();  
  2.   
  3. Document dom = xml.load(path + "/" + file);  
  4.   
  5. Element root = dom.getRootElement();  

 

 

2.3、. 新增一個節點以及其下的子節點與資料

 

[java] view plain copy

 

  1. Element menuElement = root.addElement("menu");  
  2.   
  3. Element engNameElement = menuElement.addElement("engName");  
  4.   
  5. engNameElement.setText(catNameEn);  
  6.   
  7. Element chiNameElement = menuElement.addElement("chiName");  
  8.   
  9. chiNameElement.setText(catName);  

 

 

2.4、 寫入XML檔案

注意檔案操作的包裝類是亂碼的根源

[java] view plain copy

 

  1. public static boolean doc2XmlFile(Document document, String filename) {  
  2.     boolean flag = true;  
  3.     try {  
  4.         XMLWriter writer = new XMLWriter(new OutputStreamWriter(  
  5.                 new FileOutputStream(filename), "UTF-8"));  
  6.         writer.write(document);  
  7.         writer.close();  
  8.     } catch (Exception ex) {  
  9.         flag = false;  
  10.         ex.printStackTrace();  
  11.     }  
  12.     System.out.println(flag);  
  13.     return flag;  
  14. }  
 
    Dom4j通過XMLWriterDocument物件表示的XML寫入指定的檔案,並使用OutputFormat格式物件指定寫入的風格和編碼方法。呼叫OutputFormat.createPrettyPrint()方法可以獲得一個預設的pretty print風格的格式物件。對OutputFormat物件呼叫setEncoding()方法可以指定XML檔案的編碼方法。
 

[java] view plain copy

 

  1. public void writeTo(OutputStream out, String encoding)  
  2.         throws UnsupportedEncodingException, IOException {  
  3.     OutputFormat format = OutputFormat.createPrettyPrint();  
  4.   
  5.     format.setEncoding("gb2312");  
  6.   
  7.     XMLWriter writer = new XMLWriter(System.out, format);  
  8.   
  9.     writer.write(doc);  
  10.   
  11.     writer.flush();  
  12.   
  13.     return;  
  14.   
  15. }  

2. 5、 遍歷xml節點

       對Document物件呼叫getRootElement()方法可以返回代表根節點的Element物件。擁有了一個Element物件後,可以對該物件呼叫elementIterator()方法獲得它的子節點的Element物件們的一個迭代器。使用(Element)iterator.next()方法遍歷一個iterator並把每個取出的元素轉化為Element型別。

 

[java] view plain copy

 

  1. public boolean isOnly(String catNameEn, HttpServletRequest request,  
  2.         String xml) {  
  3.     boolean flag = true;  
  4.     String path = request.getRealPath("");  
  5.     Document doc = load(path + "/" + xml);  
  6.     Element root = doc.getRootElement();  
  7.     for (Iterator i = root.elementIterator(); i.hasNext();) {  
  8.         Element el = (Element) i.next();  
  9.         if (catNameEn.equals(el.elementTextTrim("engName"))) {  
  10.             flag = false;  
  11.             break;  
  12.         }  
  13.     }  
  14.     return flag;  
  15. }  

2.6、建立xml檔案

 

[java] view plain copy

 

  1. public static void main(String args[]) {  
  2.   
  3.     String fileName = "c:/text.xml";  
  4.   
  5.     Document document = DocumentHelper.createDocument();// 建立document物件,用來操作xml檔案  
  6.   
  7.     Element booksElement = document.addElement("books");// 建立根節點  
  8.   
  9.     booksElement.addComment("This is a test for dom4j ");// 加入一行註釋  
  10.   
  11.     Element bookElement = booksElement.addElement("book");// 新增一個book節點  
  12.   
  13.     bookElement.addAttribute("show", "yes");// 新增屬性內容  
  14.   
  15.     Element titleElement = bookElement.addElement("title");// 新增文字節點  
  16.   
  17.     titleElement.setText("ajax in action");// 新增文字內容  
  18.   
  19.     try {  
  20.   
  21.         XMLWriter writer = new XMLWriter(new FileWriter(new File(fileName)));  
  22.   
  23.         writer.close();  
  24.   
  25.     } catch (Exception e) {  
  26.   
  27.         e.printStackTrace();  
  28.   
  29.     }  
  30.   
  31. }  

 

 

2.7、修改節點屬性

 

[java] view plain copy

 

  1. public static void modifyXMLFile() {  
  2.   
  3.     String oldStr = "c:/text.xml";  
  4.   
  5.     String newStr = "c:/text1.xml";  
  6.   
  7.     Document document = null;  
  8.   
  9.     //修改節點的屬性  
  10.   
  11.     try {  
  12.   
  13.     SAXReader saxReader = new SAXReader(); // 用來讀取xml文件  
  14.   
  15.     document = saxReader.read(new File(oldStr)); // 讀取xml文件  
  16.   
  17.     List list = document.selectNodes("/books/book/@show");// 用xpath查詢節點book的屬性  
  18.   
  19.     Iterator iter = list.iterator();  
  20.   
  21.     while (iter.hasNext()) {  
  22.   
  23.     Attribute attribute = (Attribute) iter.next();  
  24.   
  25.     if (attribute.getValue().equals("yes"))   
  26.   
  27.         attribute.setValue("no");  
  28.   
  29.     }  
  30.   
  31.     } catch (Exception e) {  
  32.   
  33.         e.printStackTrace();  
  34.   
  35.     }  
  36.   
  37.     //修改節點的內容  
  38.   
  39.     try {  
  40.   
  41.     SAXReader saxReader = new SAXReader(); // 用來讀取xml文件  
  42.   
  43.     document = saxReader.read(new File(oldStr)); // 讀取xml文件  
  44.   
  45.     List list = document.selectNodes("/books/book/title");// 用xpath查詢節點book的內容  
  46.   
  47.     Iterator iter = list.iterator();  
  48.   
  49.     while (iter.hasNext()) {  
  50.   
  51.     Element element = (Element) iter.next();  
  52.   
  53.     element.setText("xxx");// 設定相應的內容  
  54.   
  55.     }  
  56.   
  57.     } catch (Exception e) {  
  58.   
  59.         e.printStackTrace();  
  60.   
  61.     }  
  62.   
  63.        
  64.   
  65.     try {  
  66.   
  67.     XMLWriter writer = new XMLWriter(new FileWriter(new File(newStr)));  
  68.   
  69.     writer.write(document);  
  70.   
  71.     writer.close();  
  72.   
  73.     } catch (Exception ex) {  
  74.   
  75.         ex.printStackTrace();  
  76.   
  77.     }  
  78.   
  79. }  

 

 

2.8、刪除節點

 

[java] view plain copy

 

  1. public static void removeNode() {  
  2.   
  3.     String oldStr = "c:/text.xml";  
  4.   
  5.     String newStr = "c:/text1.xml";  
  6.   
  7.     Document document = null;  
  8.   
  9.     try {  
  10.   
  11.         SAXReader saxReader = new SAXReader();// 用來讀取xml文件  
  12.   
  13.         document = saxReader.read(new File(oldStr));// 讀取xml文件  
  14.   
  15.         List list = document.selectNodes("/books/book");// 用xpath查詢物件  
  16.   
  17.         Iterator iter = list.iterator();  
  18.   
  19.         while (iter.hasNext()) {  
  20.   
  21.             Element bookElement = (Element) iter.next();  
  22.   
  23.             // 建立迭代器,用來查詢要刪除的節點,迭代器相當於指標,指向book下所有的title節點  
  24.   
  25.             Iterator iterator = bookElement.elementIterator("title");  
  26.   
  27.             while (iterator.hasNext()) {  
  28.   
  29.                 Element titleElement = (Element) iterator.next();  
  30.   
  31.                 if (titleElement.getText().equals("ajax in action")) {  
  32.   
  33.                     bookElement.remove(titleElement);  
  34.   
  35.                 }  
  36.   
  37.             }  
  38.   
  39.         }  
  40.   
  41.     } catch (Exception e) {  
  42.   
  43.         e.printStackTrace();  
  44.   
  45.     }  
  46.   
  47.     try {  
  48.   
  49.         XMLWriter writer = new XMLWriter(new FileWriter(new File(newStr)));  
  50.   
  51.         writer.write(document);  
  52.   
  53.         writer.close();  
  54.   
  55.     } catch (Exception ex) {  
  56.   
  57.         ex.printStackTrace();  
  58.   
  59.     }  
  60.   
  61. }  

 

 

 

2、XML文件操作2

2.1、Document物件相關        

1、讀取XML檔案,獲得document物件.     

       SAXReader reader = new SAXReader();  
      Document   document = reader.read(new File("input.xml"));      

2、解析XML形式的文字,得到document物件.      

             String text = "<members></members>";      
             Document document = DocumentHelper.parseText(text);      

3、主動建立document物件.      

             Document document = DocumentHelper.createDocument();      
             Element root = document.addElement("members");// 建立根節點      

2.2、節點相關        

1、獲取文件的根節點.      

Element rootElm = document.getRootElement();      

2、取得某節點的單個子節點.      

Element memberElm=root.element("member");// "member"是節點名      

3.取得節點的文字      

String text=memberElm.getText();     
String text=root.elementText("name");這個是取得根節點下的name位元組點的文字.       

4.取得某節點下指定名稱的所有節點並進行遍歷.      

List nodes = rootElm.elements("member");      
for (Iterator it = nodes.iterator(); it.hasNext();) {      
    Element elm = (Element) it.next();      
   // do something      
}      

5.對某節點下的所有子節點進行遍歷.      

            for(Iterator it=root.elementIterator();it.hasNext();){      
                 Element element = (Element) it.next();      
                // do something      
             }      

6.在某節點下新增子節點.      

Element ageElm = newMemberElm.addElement("age");      

7.設定節點文字.      

ageElm.setText("29");      

8.刪除某節點.      

parentElm.remove(childElm);    // childElm是待刪除的節點,parentElm是其父節點      

9.新增一個CDATA節點.      

         Element contentElm = infoElm.addElement("content");      
         contentElm.addCDATA(diary.getContent());      
      

2.3、屬性相關.     

1.取得節點的指定的屬性      

             Element root=document.getRootElement();          
             Attribute attribute=root.attribute("size");    // 屬性名name      

2.取得屬性的文字      

    String text=attribute.getText();    
String text2=root.element("name").attributeValue("firstname");
//這個是取得根節點下name位元組點的firstname屬性的值.      

3.遍歷某節點的所有屬性      

Element root=document.getRootElement();
for(Iterator it=root.attributeIterator();it.hasNext();){
Attribute attribute = (Attribute) it.next();
String text=attribute.getText();
System.out.println(text);
}

4.設定某節點的屬性和文字.      

newMemberElm.addAttribute("name", "sitinspring");    

5.設定屬性的文字      

             Attribute attribute=root.attribute("name");      
             attribute.setText("sitinspring");      

6.刪除某屬性      

             Attribute attribute=root.attribute("size");// 屬性名name      
             root.remove(attribute);      

2.4、將文件寫入XML檔案.     

1.文件中全為英文,不設定編碼,直接寫入.      

XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));      
writer.write(document);      
writer.close();      

2.文件中含有中文,設定編碼格式再寫入.     

OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");    // 指定XML編碼
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);
writer.write(document);
writer.close();

2.5、字串與XML的轉換      

1.將字串轉化為XML      

String text = "<members> <member>sitinspring</member> </members>";      
Document document = DocumentHelper.parseText(text);      

2.將文件或節點的XML轉化為字串.     

SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
Element root=document.getRootElement();
String docXmlText=document.asXML();
String rootXmlText=root.asXML();
Element memberElm=root.element("member");
String memberXmlText=memberElm.asXML();
 
       
       

3、dom4j的事件處理模型涉及的類和介面:

3.1、類:SAXReader

 

     當解析到path指定的路徑時,將呼叫引數handler指定的處理器。針對不同的節點可以新增多個handler例項。或者呼叫預設的Handler setDefaultHandler(ElementHandler handler);

3.2、介面ElementHandler

 

     該方法在解析到元素的開始標籤時被呼叫。

 

     該方法在解析到元素的結束標籤時被呼叫

3.3、介面:ElementPath (假設有引數:ElementPath path)

 

     該方法與SAXReader類中的addHandler()方法的作用相同。路徑path可以是絕對路徑(路徑以/開頭),也可以是相對路徑(假設是當前路徑的子節點路徑)。

 

     移除指定路徑上的ElementHandler例項。路徑可以是相對路徑,也可以是絕對路徑。

 

     該方法得到當前節點的路徑。該方法返回的是完整的絕對路徑

 

     該方法得到當前節點。

3.3、Element類

getQName()

元素的QName物件

getNamespace()

元素所屬的Namespace物件

getNamespacePrefix()

元素所屬的Namespace物件的prefix

getNamespaceURI()

元素所屬的Namespace物件的URI

getName()

元素的local name

getQualifiedName()

元素的qualified name

getText()

元素所含有的text內容,如果內容為空則返回一個空字串而不是null

getTextTrim()

元素所含有的text內容,其中連續的空格被轉化為單個空格,該方法不會返回null

attributeIterator()

元素屬性的iterator,其中每個元素都是Attribute物件

attributeValue()

元素的某個指定屬性所含的值

elementIterator()

元素的子元素的iterator,其中每個元素都是Element物件

element()

元素的某個指定(qualified name或者local name)的子元素

elementText()

元素的某個指定(qualified name或者local name)的子元素中的text資訊

getParent

元素的父元素

getPath()

元素的XPath表示式,其中父元素的qualified name和子元素的qualified name之間使用"/"分隔

isTextOnly()

是否該元素只含有text或是空元素

isRootElement()

是否該元素是XML樹的根節點

 

3.4、類DocumentHelper 

DocumentHelper 是用來生成生成 XML 文件的工廠類

4、通過xpath查詢指定的節點

       採用xpath查詢需要引入jaxen-xx-xx.jar,否則會報java.lang.NoClassDefFoundError: org/jaxen/JaxenException異常。

 

  List list=document.selectNodes("/books/book/@show");

4.1、 xpath語法

1、選取節點

XPath 使用路徑表示式在 XML 文件中選取節點,節點是沿著路徑或者 step 來選取的。

常見的路徑表示式:

表示式

描述

nodename

選取當前節點的所有子節點

/

從根節點選取

//

從匹配選擇的當前節點選擇文件中的節點,而不考慮它們的位置

.

選取當前節點

..

選取當前節點的父節點

@

選取屬性

例項

路徑表示式

結果

bookstore

選取 bookstore 元素的所有子節點

/bookstore

選取根元素 bookstore

bookstore/book

選取bookstore 下名字為 book的所有子元素

//book

選取所有 book 子元素,而不管它們在文件中的位置。

bookstore//book

選取bookstore 下名字為 book的所有後代元素,而不管它們位於 bookstore 之下的什麼位置。

//@lang

選取所有名為 lang 的屬性。

2、謂語(Predicates)

謂語用來查詢某個特定的節點或者包含某個指定的值的節點。

謂語被嵌在方括號中。

例項

常見的謂語的一些路徑表示式:

路徑表示式

結果

/bookstore/book[1]

選取屬於 bookstore 子元素的第一個 book 元素。

/bookstore/book[last()]

選取屬於 bookstore 子元素的最後一個 book 元素。

/bookstore/book[last()-1]

選取屬於 bookstore 子元素的倒數第二個 book 元素。

/bookstore/book[position()<3]

選取最前面的兩個屬於 bookstore 元素的子元素的 book 元素。

//title[@lang]

選取所有擁有名為 lang 的屬性的 title 元素。

//title[@lang='eng']

選取所有 title 元素,要求這些元素擁有值為 eng 的 lang 屬性。

/bookstore/book[price>35.00]

選取所有 bookstore 元素的 book 元素,要求book元素的子元素 price 元素的值須大於 35.00。

/bookstore/book[price>35.00]/title

選取所有 bookstore 元素中的 book 元素的 title 元素,要求book元素的子元素 price 元素的值須大於 35.00

3、選取未知節點

XPath 萬用字元可用來選取未知的 XML 元素。

萬用字元

描述

*

匹配任何元素節點

@*

匹配任何屬性節點

node()

匹配任何型別的節點

例項

路徑表示式

結果

/bookstore/*

選取 bookstore 元素的所有子節點

//*

選取文件中的所有元素

//title[@*]

選取所有帶有屬性的 title 元素。

4、選取若干路徑

通過在路徑表示式中使用“|”運算子,您可以選取若干個路徑。

例項

路徑表示式

結果

//book/title | //book/price

選取所有 book 元素的 title 和 price 元素。

//title | //price

選取所有文件中的 title 和 price 元素。

/bookstore/book/title|//price

選取所有屬於 bookstore 元素的 book 元素的title 元素,以及文件中所有的 price 元素。

 

5、XPath 軸

軸可定義某個相對於當前節點的節點集。

軸名稱

結果

ancestor

選取當前節點的所有先輩(父、祖父等)

ancestor-or-self

選取當前節點的所有先輩(父、祖父等)以及當前節點本身

attribute

選取當前節點的所有屬性

child

選取當前節點的所有子元素。

descendant

選取當前節點的所有後代元素(子、孫等)。

descendant-or-self

選取當前節點的所有後代元素(子、孫等)以及當前節點本身。

following

選取文件中當前節點的結束標籤之後的所有節點。

namespace

選取當前節點的所有名稱空間節點

parent

選取當前節點的父節點。

preceding

選取文件中當前節點的開始標籤之前的所有節點。

preceding-sibling

選取當前節點之前的所有同級節點。

self

選取當前節點。

6、路徑

 

位置路徑可以是絕對的,也可以是相對的。

絕對路徑起始於正斜槓( / ),而相對路徑不會這樣。在兩種情況中,位置路徑均包括一個或多個步,每個步均被斜槓分割:

 

/step/step/...

 

step/step/...

每個步均根據當前節點集之中的節點來進行計算。

 

軸(axis):定義所選節點與當前節點之間的樹關係

節點測試(node-test):識別某個軸內部的節點

零個或者更多謂語(predicate):更深入地提煉所選的節點集

步的語法軸名稱::節點測試[謂語]

例項

例子

結果

child::book

選取所有屬於當前節點的子元素的 book 節點

attribute::lang

選取當前節點的 lang 屬性

child::*

選取當前節點的所有子元素

attribute::*

選取當前節點的所有屬性

child::text()

選取當前節點的所有文字子節點

child::node()

選取當前節點的所有子節點

descendant::book

選取當前節點的所有 book 後代

ancestor::book

選擇當前節點的所有 book 先輩

ancestor-or-self::book

選取當前節點的所有book先輩以及當前節點(假如此節點是book節點的話)

child::*/child::price

選取當前節點的所有 price 孫。

 

7、XPath 運算子

運算子

描述

例項

返回值

|

計算兩個節點集

//book | //cd

返回所有帶有 book 和 ck 元素的節點集

+

加法

6 + 4

10

-

減法

6 - 4

2

*

乘法

6 * 4

24

div

除法

8 div 4

2

=

等於

price=9.80

如果 price 是 9.80,則返回 true。

如果 price 是 9.90,則返回 fasle。

!=

不等於

price!=9.80

如果 price 是 9.90,則返回 true。

如果 price 是 9.80,則返回 fasle。

小於

price<9.80

如果 price 是 9.00,則返回 true。

如果 price 是 9.90,則返回 fasle。

<=

小於或等於

price<=9.80

如果 price 是 9.00,則返回 true。

如果 price 是 9.90,則返回 fasle。

大於

price>9.80

如果 price 是 9.90,則返回 true。

如果 price 是 9.80,則返回 fasle。

>=

大於或等於

price>=9.80

如果 price 是 9.90,則返回 true。

如果 price 是 9.70,則返回 fasle。

or

price=9.80 or price=9.70

如果 price 是 9.80,則返回 true。

如果 price 是 9.50,則返回 fasle。

and

相關推薦

Dom4j完整教程,操作XML教程

document error: 轉換 nco 特色 3.4 [] 不同 false 目錄 1、DOM4J簡介 2、XML文檔操作1 2.1、讀取XML文檔: 2.2、獲取根節點 2.3、. 新增一個節點以及其下的子節點與數據

Dom4j完整教程

Dom4j完整教程   目錄 1、DOM4J簡介 2、XML文件操作1       2.1、讀取XML文件:       2.2、獲取根節點       2.3、.&nbs

Linux CentOS 6 NAT 轉發 完整教程

linux centos 6 nat 轉發 完整教程網絡拓補圖:環境介紹:一臺CentOS6 主機,雙網卡,兩網段網口設定如下:[[email protected]/* */ ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=et

MVC 5 + EF6 入門完整教程14 -- 動態生成面包屑導航

maps setting i++ log item 文檔 應該 動態生成 內容 上篇文章我們完成了 動態生成多級菜單 這個實用組件。 本篇文章我們要開發另一個實用組件:面包屑導航。 面包屑導航(BreadcrumbNavigation)這個概念來自童話故事"漢賽爾和格萊特"

MVC5+EF6 入門完整教程

taf bag details 視圖 clu role pre 階段 驗證 前一陣子臨時有事,這篇文章發布間隔比較長,我們先回顧下之前的內容,每篇文章用一句話總結重點。 文章一 MVC核心概念簡介,一個基本MVC項目結構 文章二 通過開發一個最基本的登錄界面,介紹了如何從C

MVC5+EF6 入門完整教程12--靈活控制Action權限

全局 基本功 -1 str 條件 context tac 完整 suse 大家久等了。 本篇專題主要講述MVC中的權限方案。 權限控制是每個系統都必須解決的問題,也是園子裏討論最多的專題之一。 前面的系列文章中我們用到了 SysUser, SysRole, SysUserR

MVC 5 + EF6 完整教程16 -- 控制器詳解

cpp tpc 當我 出了 多個 展現 dts model類 路由規則 Controller作為持久層和展現層的橋梁, 封裝了應用程序的邏輯,是MVC中的核心組件之一。 本篇文章我們就來談談 Controller, 主要討論兩個方面: Controller運行機制簡介 C

MVC5+EF6 入門完整教程

好的 ring 改變 替換 使用 需要 註釋 mod num 本篇我們針對表格顯示添加一些新功能。 前面我們已經講解過表格顯示數據了,現在我們添加三個常用功能: 對顯示結果進行排序、過濾、分頁。 文章提綱 理論基礎/前置準備 詳細步驟 總結 前置準備 – 應

MVC5+EF6 入門完整教程

crud 新建 用戶角色 tro mic acc where shtml pos 本篇是第一階段的完結篇。 學完這篇後,你應該可以利用MVC進行完整項目的開發了。 本篇主要講述多表關聯數據的更新,以及如何使用原生SQL。 文章提綱 多表關聯數據更新 如何使用原生SQ

速賣通AE平臺+聚石塔+奇門 完整教程V2

demo bmf 是我 ppk 麻煩 ram 昨天 適合 pos 公司是跨境電商,在阿裏馬馬的速賣通平臺上開有店鋪,並且基於速賣通開放平臺,自主研發了ERP系統,居今已有3年多的時間了,一直很穩定。 今年初,速賣通AE開放平臺改版,並入淘寶開放平臺中,我們的麻煩就開

XX-NET史上最詳細完整教程

偽造 不用 app 分享圖片 AS 版本 firefox 配置過程 自動切換 前言   XX-NET,系GAE類代理,即通過可用Google ip連接Google App Engine項目,然後把所有tcp請求發送給Google App Engine,最終實現科學式網絡的

用爬蟲和Flask打造屬於自己的電影網站,完整教程送上!

alt mysql服務器 學習 安裝 友好 點擊 沒有 網易 sql安裝 也許你曾經為了一部電影找遍全網卻沒發現任何有用的資源,也許你曾經被披著電影外衣的網站忽悠進去而染上×××病毒。一部小小的電影搞得你心力交瘁,懷疑人生。不過,作為一名合格的程序員,一向以write th

MVC5+EF6 完整教程17--升級到EFCore2.0

app authent 查詢 pan 得到 登錄界面 dbconnect 升級 class 原文:MVC5+EF6 完整教程17--升級到EFCore2.0EF Core 2.0上周已經發布了,我們也升級到core 文章內容基於vs2017,請大家先安裝好vs2017(1

Windows上安裝MySQL的完整教程

  1.     首先去官方網站下載壓縮檔案:https://dev.mysql.com/downloads/mysql/   2.     解壓下載的檔案。  

yum 方式安裝MySQL5.7並配置遠端連線完整教程Linux(CentOS7)

轉載註明出處:https://blog.csdn.net/zouguo1211/article/details/83867896 前言 系統資訊:CentOS Linux release 7.5.1804 (Core) MySQL版本:mysql-5.7 接下來的操作均是

親測!Ubuntu18.04與WIN10雙系統(USB EFI方式安裝—Grub2.0引導修復)完整教程

轉載請註明出處 https://blog.csdn.net/zouguo1211/article/details/81200628 前言 前期準備 WIN10前期準備 Ubuntu 18.04 LTS 系統盤準備 安裝 Grub修復 WIN10選項恢復 常見問題

Android Studio使用Google Flutter完整教程 【0】

轉載自:https://blog.csdn.net/gfg156196/article/details/81118368   一套程式碼 iOS、Android 兩端執行,Google Flutter 實在太強大。。 “Flutter 可幫助你更容易、更快速的開發介面美觀的移動

原創教程:帶ppt課件和講師畫面的教學視訊錄製完整教程

/ 原創教程 - 2018-11-13 / 說明:本教程是教大家如何通過電腦,以最佳的形式來錄製帶ppt課件和講師畫面的教學視訊;適合老師線上教學課程錄製、培訓課程錄製。 優勢:相比較常見的錄屏工具,錄製整個螢幕,本工具可以只錄ppt課件本身,不錄製到桌面上其他雜七雜八的內容,很清晰,很

activiti完整教程

轉載自:https://www.cnblogs.com/ginb/p/7624820.html   瞭解工作流 1、工作流(Workflow),就是“業務過程的部分或整體在計算機應用環境下的自動化”,它主要解決的是“使在多個參與者之間按照某種預定義的規則傳遞文件、資訊或任務的過

完整教程--idea使用git進行專案管理?

第一部分: 安裝 1. 下載地址:  https://git-scm.com/download/win; 如果速度慢, 使用 迅雷下載; 2. 點選安裝, 然後下一步, 直到下面這個頁面: 建議: 按照上面所示方式選中複選框 ; 3  點選下一步,