<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    9.5. 搜索元素

                    通過一步步訪問每一個節點的方式遍歷 XML 文檔可能很乏味。如果你正在尋找些特別的東西,又恰恰它們深深埋入了你的 XML 文檔,有個捷徑讓你可以快速找到它:getElementsByTagName

                    在這部分,將使用 binary.xml 語法文件,它的內容如下:

                    例 9.20. binary.xml

                    <?xml version="1.0"?>
                    <!DOCTYPE grammar PUBLIC "-//diveintopython.org//DTD Kant Generator Pro v1.0//EN" "kgp.dtd">
                    <grammar>
                    <ref id="bit">
                      <p>0</p>
                      <p>1</p>
                    </ref>
                    <ref id="byte">
                      <p><xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/>\
                    <xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/></p>
                    </ref>
                    </grammar>

                    它有兩個 ref'bit' (位) 和 'byte' (字節)。一個 bit'0' 或者 '1',而一個 byte 是 8 個 bit

                    例 9.21. getElementsByTagName 介紹

                    >>> from xml.dom import minidom
                    >>> xmldoc = minidom.parse('binary.xml')
                    >>> reflist = xmldoc.getElementsByTagName('ref') 1
                    >>> reflist
                    [<DOM Element: ref at 136138108>, <DOM Element: ref at 136144292>]
                    >>> print reflist[0].toxml()
                    <ref id="bit">
                      <p>0</p>
                      <p>1</p>
                    </ref>
                    >>> print reflist[1].toxml()
                    <ref id="byte">
                      <p><xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/>\
                    <xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/></p>
                    </ref>
                    
                    1 getElementsByTagName 接收一個參數,即要找的元素的名稱。它返回一個 Element 對象的列表,列表中的對象都是有指定名稱的 XML 元素。在本例中,你能找到兩個 ref 元素。

                    例 9.22. 每個元素都是可搜索的

                    >>> firstref = reflist[0]                      1
                    >>> print firstref.toxml()
                    <ref id="bit">
                      <p>0</p>
                      <p>1</p>
                    </ref>
                    >>> plist = firstref.getElementsByTagName("p") 2
                    >>> plist
                    [<DOM Element: p at 136140116>, <DOM Element: p at 136142172>]
                    >>> print plist[0].toxml()                     3
                    <p>0</p>
                    >>> print plist[1].toxml()
                    <p>1</p>
                    1 繼續前面的例子,在 reflist 中的第一個對象是 'bit' ref元素。
                    2 你可以在這個 Element 上使用相同的 getElementsByTagName 方法來尋找所有在'bit' ref 元素中的<p>元素。
                    3 和前面一樣,getElementsByTagName 方法返回一個找到元素的列表。在本例中,你有兩個元素,每“位”各占一個。

                    例 9.23. 搜索實際上是遞歸的

                    >>> plist = xmldoc.getElementsByTagName("p") 1
                    >>> plist
                    [<DOM Element: p at 136140116>, <DOM Element: p at 136142172>, <DOM Element: p at 136146124>]
                    >>> plist[0].toxml()                         2
                    '<p>0</p>'
                    >>> plist[1].toxml()
                    '<p>1</p>'
                    >>> plist[2].toxml()                         3
                    '<p><xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/>\
                    <xref id="bit"/><xref id="bit"/><xref id="bit"/><xref id="bit"/></p>'
                    1 仔細注意這個例子和前面例子之間的不同。前面,你是在 firstref 中搜索 p 元素,但是這里你是在 xmldoc 中搜索 p 元素,xmldoc 是代表了整個 XML 文檔的根層對象。這樣就會 找到嵌套在 ref 元素 (它嵌套在根 grammar 元素中) 中的 p 元素。
                    2 前兩個 p 元素在第一個 ref 內 ('bit' ref)。
                    3 后一個 p 元素在第二個 ref 中 ('byte' ref)。

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频