Hướng dẫn python minidom examples - ví dụ về python minidom

Mã nguồn: lib/xml/dom/minidom.py Lib/xml/dom/minidom.py


xml.dom.minidom là một triển khai tối thiểu của giao diện mô hình đối tượng tài liệu, với API tương tự như trong các ngôn ngữ khác. Nó được dự định đơn giản hơn so với DOM đầy đủ và cũng nhỏ hơn đáng kể. Người dùng chưa thành thạo với DOM nên xem xét sử dụng mô -đun xml.etree.ElementTree để xử lý XML của họ.

Các ứng dụng DOM thường bắt đầu bằng cách phân tích một số XML vào DOM. Với xml.dom.minidom, điều này được thực hiện thông qua các hàm phân tích.

from xml.dom.minidom import parse, parseString

dom1 = parse('c:\\temp\\mydata.xml')  # parse an XML file by name

datasource = open('c:\\temp\\mydata.xml')
dom2 = parse(datasource)  # parse an open file

dom3 = parseString('Some data some more data')

Hàm parse() có thể lấy tên tệp hoặc đối tượng tệp mở.

xml.dom.minidom.parse (filename_or_file, Parser = none, bufsize = none) ¶parse(filename_or_file, parser=None, bufsize=None)

Trả về Document từ đầu vào đã cho. fileName_or_file có thể là tên tệp hoặc đối tượng giống như tệp. Trình phân tích cú pháp, nếu được đưa ra, phải là một đối tượng phân tích cú pháp SAX2. Hàm này sẽ thay đổi trình xử lý tài liệu của trình phân tích cú pháp và kích hoạt hỗ trợ không gian tên; Cấu hình trình phân tích cú pháp khác (như đặt một trình phân giải thực thể) phải được thực hiện trước.

Nếu bạn có XML trong một chuỗi, bạn có thể sử dụng hàm

from xml.dom.minidom import getDOMImplementation

impl = getDOMImplementation()

newdoc = impl.createDocument(None, "some_tag", None)
top_element = newdoc.documentElement
text = newdoc.createTextNode('Some textual content.')
top_element.appendChild(text)
0 thay thế:

xml.dom.minidom.parsestring (String, Parser = none) ¶parseString(string, parser=None)

Trả về một Document đại diện cho chuỗi. Phương thức này tạo ra một đối tượng

from xml.dom.minidom import getDOMImplementation

impl = getDOMImplementation()

newdoc = impl.createDocument(None, "some_tag", None)
top_element = newdoc.documentElement
text = newdoc.createTextNode('Some textual content.')
top_element.appendChild(text)
2 cho chuỗi và chuyển nó đến parse().

Cả hai chức năng trả về một đối tượng Document đại diện cho nội dung của tài liệu.

Những gì các chức năng parse()

from xml.dom.minidom import getDOMImplementation

impl = getDOMImplementation()

newdoc = impl.createDocument(None, "some_tag", None)
top_element = newdoc.documentElement
text = newdoc.createTextNode('Some textual content.')
top_element.appendChild(text)
0 làm là kết nối trình phân tích cú pháp XML với trình xây dựng DOM DOM có thể chấp nhận các sự kiện phân tích từ bất kỳ trình phân tích cú pháp SAX nào và chuyển chúng thành cây dom. Tên của các chức năng có lẽ là sai lệch, nhưng dễ nắm bắt khi học các giao diện. Việc phân tích cú pháp của tài liệu sẽ được hoàn thành trước khi các chức năng này trở lại; Nó chỉ đơn giản là các chức năng này không tự cung cấp trình phân tích cú pháp.

Bạn cũng có thể tạo một Document bằng cách gọi một phương thức trên đối tượng triển khai DOM DOM. Bạn có thể nhận được đối tượng này bằng cách gọi hàm

from xml.dom.minidom import getDOMImplementation

impl = getDOMImplementation()

newdoc = impl.createDocument(None, "some_tag", None)
top_element = newdoc.documentElement
text = newdoc.createTextNode('Some textual content.')
top_element.appendChild(text)
8 trong gói
from xml.dom.minidom import getDOMImplementation

impl = getDOMImplementation()

newdoc = impl.createDocument(None, "some_tag", None)
top_element = newdoc.documentElement
text = newdoc.createTextNode('Some textual content.')
top_element.appendChild(text)
9 hoặc mô -đun xml.dom.minidom. Khi bạn có Document, bạn có thể thêm các nút con vào nó để điền vào DOM:

from xml.dom.minidom import getDOMImplementation

impl = getDOMImplementation()

newdoc = impl.createDocument(None, "some_tag", None)
top_element = newdoc.documentElement
text = newdoc.createTextNode('Some textual content.')
top_element.appendChild(text)

Khi bạn có một đối tượng tài liệu DOM, bạn có thể truy cập các phần của tài liệu XML của mình thông qua các thuộc tính và phương thức của nó. Các thuộc tính này được xác định trong đặc tả DOM. Thuộc tính chính của đối tượng tài liệu là thuộc tính

dom3 = parseString("Some data")
assert dom3.documentElement.tagName == "myxml"
2. Nó cung cấp cho bạn yếu tố chính trong tài liệu XML: một phần tử giữ tất cả các phần khác. Đây là một chương trình ví dụ:

dom3 = parseString("Some data")
assert dom3.documentElement.tagName == "myxml"

Khi bạn kết thúc với một cây DOM, bạn có thể tùy ý gọi phương thức

dom3 = parseString("Some data")
assert dom3.documentElement.tagName == "myxml"
3 để khuyến khích việc dọn dẹp sớm các đối tượng chưa được giải quyết.
dom3 = parseString("Some data")
assert dom3.documentElement.tagName == "myxml"
3 là một phần mở rộng cụ thể của ____ 5 cho API DOM làm cho nút và hậu duệ của nó về cơ bản là vô dụng. Nếu không, người thu gom rác Python cuối cùng sẽ chăm sóc các vật thể trong cây.

Đối tượng dom

Định nghĩa của API DOM cho Python được đưa ra như là một phần của tài liệu mô -đun

from xml.dom.minidom import getDOMImplementation

impl = getDOMImplementation()

newdoc = impl.createDocument(None, "some_tag", None)
top_element = newdoc.documentElement
text = newdoc.createTextNode('Some textual content.')
top_element.appendChild(text)
9. Phần này liệt kê sự khác biệt giữa API và xml.dom.minidom.

Node.unlink () ¶unlink()

Phá vỡ các tài liệu tham khảo nội bộ trong DOM để nó sẽ được thu thập trên các phiên bản của Python mà không có GC theo chu kỳ. Ngay cả khi có sẵn GC theo chu kỳ, việc sử dụng điều này có thể làm cho một lượng lớn bộ nhớ có sẵn sớm hơn, vì vậy hãy gọi nó trên các đối tượng DOM ngay khi chúng không còn cần thiết là thực hành tốt. Điều này chỉ cần được gọi trên đối tượng Document, nhưng có thể được gọi trên các nút con để loại bỏ trẻ em của nút đó.

Bạn có thể tránh gọi phương thức này một cách rõ ràng bằng cách sử dụng câu lệnh

dom3 = parseString("Some data")
assert dom3.documentElement.tagName == "myxml"
9. Mã sau đây sẽ tự động hủy liên kết DOM khi khối
dom3 = parseString("Some data")
assert dom3.documentElement.tagName == "myxml"
9 bị lỗi:

with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.

Node.writexml (người viết, thụt lề = '', addIndent = '', newl = '', mã hóa = none, standalone = none) ¶writexml(writer, indent='', addindent='', newl='', encoding=None, standalone=None)

Viết XML vào đối tượng nhà văn. Người viết nhận được các văn bản nhưng không phải byte làm đầu vào, nó phải có phương thức

with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
1 phù hợp với giao diện đối tượng tệp. Tham số thụt lề là thụt của nút hiện tại. Tham số bổ sung là vết lõm gia tăng để sử dụng cho các mã con của hiện tại. Tham số NewL chỉ định chuỗi để sử dụng để chấm dứt Newlines.

Đối với nút Document, một mã hóa đối số từ khóa bổ sung có thể được sử dụng để chỉ định trường mã hóa của tiêu đề XML.

Tương tự, việc nêu rõ đối số độc lập khiến các khai báo tài liệu độc lập được thêm vào phần mở đầu của tài liệu XML. Nếu giá trị được đặt thành

with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
3,
with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
4 được thêm vào, nếu không nó được đặt thành
with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
5. Không nêu ra đối số sẽ bỏ qua tuyên bố từ tài liệu.

Đã thay đổi trong phiên bản 3.8: Phương thức

with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
6 hiện bảo tồn thứ tự thuộc tính được chỉ định bởi người dùng.The
with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
6 method now preserves the attribute order specified by the user.

Thay đổi trong phiên bản 3.9: Tham số độc lập đã được thêm vào.The standalone parameter was added.

Node.toxml (mã hóa = không, độc lập = không) ¶toxml(encoding=None, standalone=None)

Trả về một chuỗi hoặc chuỗi byte chứa XML được biểu thị bằng nút DOM.

Với một đối số mã hóa rõ ràng 1, kết quả là một chuỗi byte trong mã hóa được chỉ định. Không có đối số mã hóa, kết quả là một chuỗi unicode và khai báo XML trong chuỗi kết quả không chỉ định mã hóa. Mã hóa chuỗi này trong một mã hóa khác với UTF-8 có khả năng không chính xác, vì UTF-8 là mã hóa mặc định của XML.

Đối số độc lập hoạt động chính xác như trong

with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
6.

Đã thay đổi trong phiên bản 3.8: Phương thức

with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
8 hiện bảo tồn thứ tự thuộc tính được chỉ định bởi người dùng.The
with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
8 method now preserves the attribute order specified by the user.

Thay đổi trong phiên bản 3.9: Tham số độc lập đã được thêm vào.The standalone parameter was added.

Node.toprettyxml (thụt lề = '\ t', newl = '\ n', mã hóa = không, độc lập = none) ¶toprettyxml(indent='\t', newl='\n', encoding=None, standalone=None)

Trả về một phiên bản in khá đẹp của tài liệu. thụt lề chỉ định chuỗi thụt và mặc định cho một trình lập bảng; Newl chỉ định chuỗi phát ra ở cuối mỗi dòng và mặc định là

with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
9.

Đối số mã hóa hoạt động giống như đối số tương ứng của

with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
8.

Đối số độc lập hoạt động chính xác như trong

with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
6.

Đã thay đổi trong phiên bản 3.8: Phương thức

with xml.dom.minidom.parse(datasource) as dom:
    ... # Work with dom.
8 hiện bảo tồn thứ tự thuộc tính được chỉ định bởi người dùng.The
import xml.dom.minidom

document = """\

Demo slideshow
Slide title
This is a demo
Of a program for processing slides


Another demo slide
It is important
To have more than
one slide


"""

dom = xml.dom.minidom.parseString(document)

def getText(nodelist):
    rc = []
    for node in nodelist:
        if node.nodeType == node.TEXT_NODE:
            rc.append(node.data)
    return ''.join(rc)

def handleSlideshow(slideshow):
    print("")
    handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
    slides = slideshow.getElementsByTagName("slide")
    handleToc(slides)
    handleSlides(slides)
    print("")
def handleSlides(slides):
for slide in slides:
handleSlide(slide)
def handleSlide(slide):
handleSlideTitle(slide.getElementsByTagName("title")[0])
handlePoints(slide.getElementsByTagName("point"))
def handleSlideshowTitle(title):
print(f"</span><span>{</span><span>getText</span><span>(</span><span>title</span><span>.</span><span>childNodes</span><span>)</span><span>}</span><span>")
def handleSlideTitle(title):
print(f"

{getText(title.childNodes)}

"
) def handlePoints(points): print("
    ") for point in points: handlePoint(point) print("
"
) def handlePoint(point): print(f"
  • {getText(point.childNodes)}
  • "
    ) def handleToc(slides): for slide in slides: title = slide.getElementsByTagName("title")[0] print(f"

    {getText(title.childNodes)}

    "
    ) handleSlideshow(dom)
    2 method now preserves the attribute order specified by the user.

    Thay đổi trong phiên bản 3.9: Tham số độc lập đã được thêm vào.The standalone parameter was added.

    Node.toprettyxml (thụt lề = '\ t', newl = '\ n', mã hóa = không, độc lập = none) ¶

    Trả về một phiên bản in khá đẹp của tài liệu. thụt lề chỉ định chuỗi thụt và mặc định cho một trình lập bảng; Newl chỉ định chuỗi phát ra ở cuối mỗi dòng và mặc định là

    with xml.dom.minidom.parse(datasource) as dom:
        ... # Work with dom.
    
    9.

    import xml.dom.minidom
    
    document = """\
    
    Demo slideshow
    Slide title
    This is a demo
    Of a program for processing slides
    
    
    Another demo slide
    It is important
    To have more than
    one slide
    
    
    """
    
    dom = xml.dom.minidom.parseString(document)
    
    def getText(nodelist):
        rc = []
        for node in nodelist:
            if node.nodeType == node.TEXT_NODE:
                rc.append(node.data)
        return ''.join(rc)
    
    def handleSlideshow(slideshow):
        print("")
        handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
        slides = slideshow.getElementsByTagName("slide")
        handleToc(slides)
        handleSlides(slides)
        print("")
    
    def handleSlides(slides):
        for slide in slides:
            handleSlide(slide)
    
    def handleSlide(slide):
        handleSlideTitle(slide.getElementsByTagName("title")[0])
        handlePoints(slide.getElementsByTagName("point"))
    
    def handleSlideshowTitle(title):
        print(f"</span><span>{</span><span>getText</span><span>(</span><span>title</span><span>.</span><span>childNodes</span><span>)</span><span>}</span><span>")
    
    def handleSlideTitle(title):
        print(f"

    {getText(title.childNodes)}

    "
    ) def handlePoints(points): print("
      ") for point in points: handlePoint(point) print("
    "
    ) def handlePoint(point): print(f"
  • {getText(point.childNodes)}
  • "
    ) def handleToc(slides): for slide in slides: title = slide.getElementsByTagName("title")[0] print(f"

    {getText(title.childNodes)}

    "
    ) handleSlideshow(dom)

    Đối số mã hóa hoạt động giống như đối số tương ứng của with xml.dom.minidom.parse(datasource) as dom: ... # Work with dom. 8.

    Đã thay đổi trong phiên bản 3.8: Phương thức

    import xml.dom.minidom
    
    document = """\
    
    Demo slideshow
    Slide title
    This is a demo
    Of a program for processing slides
    
    
    Another demo slide
    It is important
    To have more than
    one slide
    
    
    """
    
    dom = xml.dom.minidom.parseString(document)
    
    def getText(nodelist):
        rc = []
        for node in nodelist:
            if node.nodeType == node.TEXT_NODE:
                rc.append(node.data)
        return ''.join(rc)
    
    def handleSlideshow(slideshow):
        print("")
        handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
        slides = slideshow.getElementsByTagName("slide")
        handleToc(slides)
        handleSlides(slides)
        print("")
    
    def handleSlides(slides):
        for slide in slides:
            handleSlide(slide)
    
    def handleSlide(slide):
        handleSlideTitle(slide.getElementsByTagName("title")[0])
        handlePoints(slide.getElementsByTagName("point"))
    
    def handleSlideshowTitle(title):
        print(f"</span><span>{</span><span>getText</span><span>(</span><span>title</span><span>.</span><span>childNodes</span><span>)</span><span>}</span><span>")
    
    def handleSlideTitle(title):
        print(f"

    {getText(title.childNodes)}

    "
    ) def handlePoints(points): print("
      ") for point in points: handlePoint(point) print("
    "
    ) def handlePoint(point): print(f"
  • {getText(point.childNodes)}
  • "
    ) def handleToc(slides): for slide in slides: title = slide.getElementsByTagName("title")[0] print(f"

    {getText(title.childNodes)}

    "
    ) handleSlideshow(dom)
    2 hiện bảo tồn thứ tự thuộc tính được chỉ định bởi người dùng.

    Ví dụ dom

    • Chương trình ví dụ này là một ví dụ khá thực tế về một chương trình đơn giản. Trong trường hợp cụ thể này, chúng tôi không tận dụng nhiều lợi thế về tính linh hoạt của DOM.

    • Minidom và tiêu chuẩn DOM

    • Mô-đun xml.dom.minidom về cơ bản là DOM tương thích DOM 1.0 với một số tính năng DOM 2 (chủ yếu là các tính năng không gian tên).

    • Việc sử dụng giao diện DOM trong Python là thẳng. Các quy tắc ánh xạ sau áp dụng:

    • Giao diện được truy cập thông qua các đối tượng thể hiện. Các ứng dụng không nên tự khởi tạo các lớp; Họ nên sử dụng các hàm của người tạo có sẵn trên đối tượng Document. Giao diện dẫn xuất hỗ trợ tất cả các hoạt động (và thuộc tính) từ các giao diện cơ sở, cộng với bất kỳ hoạt động mới nào.

    • Hoạt động được sử dụng làm phương pháp. Vì DOM chỉ sử dụng các tham số

      import xml.dom.minidom
      
      document = """\
      
      Demo slideshow
      Slide title
      This is a demo
      Of a program for processing slides
      
      
      Another demo slide
      It is important
      To have more than
      one slide
      
      
      """
      
      dom = xml.dom.minidom.parseString(document)
      
      def getText(nodelist):
          rc = []
          for node in nodelist:
              if node.nodeType == node.TEXT_NODE:
                  rc.append(node.data)
          return ''.join(rc)
      
      def handleSlideshow(slideshow):
          print("")
          handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
          slides = slideshow.getElementsByTagName("slide")
          handleToc(slides)
          handleSlides(slides)
          print("")
      
      def handleSlides(slides):
          for slide in slides:
              handleSlide(slide)
      
      def handleSlide(slide):
          handleSlideTitle(slide.getElementsByTagName("title")[0])
          handlePoints(slide.getElementsByTagName("point"))
      
      def handleSlideshowTitle(title):
          print(f"</span><span>{</span><span>getText</span><span>(</span><span>title</span><span>.</span><span>childNodes</span><span>)</span><span>}</span><span>")
      
      def handleSlideTitle(title):
          print(f"

      {getText(title.childNodes)}

      "
      ) def handlePoints(points): print("
        ") for point in points: handlePoint(point) print("
      "
      ) def handlePoint(point): print(f"
    • {getText(point.childNodes)}
    • "
      ) def handleToc(slides): for slide in slides: title = slide.getElementsByTagName("title")[0] print(f"

      {getText(title.childNodes)}

      "
      ) handleSlideshow(dom)
      5, các đối số được truyền theo thứ tự thông thường (từ trái sang phải). Không có lập luận tùy chọn.
      import xml.dom.minidom
      
      document = """\
      
      Demo slideshow
      Slide title
      This is a demo
      Of a program for processing slides
      
      
      Another demo slide
      It is important
      To have more than
      one slide
      
      
      """
      
      dom = xml.dom.minidom.parseString(document)
      
      def getText(nodelist):
          rc = []
          for node in nodelist:
              if node.nodeType == node.TEXT_NODE:
                  rc.append(node.data)
          return ''.join(rc)
      
      def handleSlideshow(slideshow):
          print("")
          handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
          slides = slideshow.getElementsByTagName("slide")
          handleToc(slides)
          handleSlides(slides)
          print("")
      
      def handleSlides(slides):
          for slide in slides:
              handleSlide(slide)
      
      def handleSlide(slide):
          handleSlideTitle(slide.getElementsByTagName("title")[0])
          handlePoints(slide.getElementsByTagName("point"))
      
      def handleSlideshowTitle(title):
          print(f"</span><span>{</span><span>getText</span><span>(</span><span>title</span><span>.</span><span>childNodes</span><span>)</span><span>}</span><span>")
      
      def handleSlideTitle(title):
          print(f"

      {getText(title.childNodes)}

      "
      ) def handlePoints(points): print("
        ") for point in points: handlePoint(point) print("
      "
      ) def handlePoint(point): print(f"
    • {getText(point.childNodes)}
    • "
      ) def handleToc(slides): for slide in slides: title = slide.getElementsByTagName("title")[0] print(f"

      {getText(title.childNodes)}

      "
      ) handleSlideshow(dom)
      6 Hoạt động trả về
      import xml.dom.minidom
      
      document = """\
      
      Demo slideshow
      Slide title
      This is a demo
      Of a program for processing slides
      
      
      Another demo slide
      It is important
      To have more than
      one slide
      
      
      """
      
      dom = xml.dom.minidom.parseString(document)
      
      def getText(nodelist):
          rc = []
          for node in nodelist:
              if node.nodeType == node.TEXT_NODE:
                  rc.append(node.data)
          return ''.join(rc)
      
      def handleSlideshow(slideshow):
          print("")
          handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
          slides = slideshow.getElementsByTagName("slide")
          handleToc(slides)
          handleSlides(slides)
          print("")
      
      def handleSlides(slides):
          for slide in slides:
              handleSlide(slide)
      
      def handleSlide(slide):
          handleSlideTitle(slide.getElementsByTagName("title")[0])
          handlePoints(slide.getElementsByTagName("point"))
      
      def handleSlideshowTitle(title):
          print(f"</span><span>{</span><span>getText</span><span>(</span><span>title</span><span>.</span><span>childNodes</span><span>)</span><span>}</span><span>")
      
      def handleSlideTitle(title):
          print(f"

      {getText(title.childNodes)}

      "
      ) def handlePoints(points): print("
        ") for point in points: handlePoint(point) print("
      "
      ) def handlePoint(point): print(f"
    • {getText(point.childNodes)}
    • "
      ) def handleToc(slides): for slide in slides: title = slide.getElementsByTagName("title")[0] print(f"

      {getText(title.childNodes)}

      "
      ) handleSlideshow(dom)
      7.

    • Thuộc tính IDL Bản đồ vào các thuộc tính thể hiện. Để tương thích với ánh xạ ngôn ngữ OMG IDL cho Python, một thuộc tính

      import xml.dom.minidom
      
      document = """\
      
      Demo slideshow
      Slide title
      This is a demo
      Of a program for processing slides
      
      
      Another demo slide
      It is important
      To have more than
      one slide
      
      
      """
      
      dom = xml.dom.minidom.parseString(document)
      
      def getText(nodelist):
          rc = []
          for node in nodelist:
              if node.nodeType == node.TEXT_NODE:
                  rc.append(node.data)
          return ''.join(rc)
      
      def handleSlideshow(slideshow):
          print("")
          handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
          slides = slideshow.getElementsByTagName("slide")
          handleToc(slides)
          handleSlides(slides)
          print("")
      
      def handleSlides(slides):
          for slide in slides:
              handleSlide(slide)
      
      def handleSlide(slide):
          handleSlideTitle(slide.getElementsByTagName("title")[0])
          handlePoints(slide.getElementsByTagName("point"))
      
      def handleSlideshowTitle(title):
          print(f"</span><span>{</span><span>getText</span><span>(</span><span>title</span><span>.</span><span>childNodes</span><span>)</span><span>}</span><span>")
      
      def handleSlideTitle(title):
          print(f"

      {getText(title.childNodes)}

      "
      ) def handlePoints(points): print("
        ") for point in points: handlePoint(point) print("
      "
      ) def handlePoint(point): print(f"
    • {getText(point.childNodes)}
    • "
      ) def handleToc(slides): for slide in slides: title = slide.getElementsByTagName("title")[0] print(f"

      {getText(title.childNodes)}

      "
      ) handleSlideshow(dom)
      8 cũng có thể được truy cập thông qua các phương thức accessor
      import xml.dom.minidom
      
      document = """\
      
      Demo slideshow
      Slide title
      This is a demo
      Of a program for processing slides
      
      
      Another demo slide
      It is important
      To have more than
      one slide
      
      
      """
      
      dom = xml.dom.minidom.parseString(document)
      
      def getText(nodelist):
          rc = []
          for node in nodelist:
              if node.nodeType == node.TEXT_NODE:
                  rc.append(node.data)
          return ''.join(rc)
      
      def handleSlideshow(slideshow):
          print("")
          handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
          slides = slideshow.getElementsByTagName("slide")
          handleToc(slides)
          handleSlides(slides)
          print("")
      
      def handleSlides(slides):
          for slide in slides:
              handleSlide(slide)
      
      def handleSlide(slide):
          handleSlideTitle(slide.getElementsByTagName("title")[0])
          handlePoints(slide.getElementsByTagName("point"))
      
      def handleSlideshowTitle(title):
          print(f"</span><span>{</span><span>getText</span><span>(</span><span>title</span><span>.</span><span>childNodes</span><span>)</span><span>}</span><span>")
      
      def handleSlideTitle(title):
          print(f"

      {getText(title.childNodes)}

      "
      ) def handlePoints(points): print("
        ") for point in points: handlePoint(point) print("
      "
      ) def handlePoint(point): print(f"
    • {getText(point.childNodes)}
    • "
      ) def handleToc(slides): for slide in slides: title = slide.getElementsByTagName("title")[0] print(f"

      {getText(title.childNodes)}

      "
      ) handleSlideshow(dom)
      9 và xml.dom.minidom0. xml.dom.minidom1 Các thuộc tính không được thay đổi; Điều này không được thực thi trong thời gian chạy.

    • Các loại xml.dom.minidom2, xml.dom.minidom3, xml.dom.minidom4 và xml.dom.minidom5 tất cả bản đồ đến các đối tượng số nguyên Python.

    Loại xml.dom.minidom6 bản đồ cho chuỗi Python. xml.dom.minidom hỗ trợ byte hoặc chuỗi, nhưng thường sẽ tạo ra các chuỗi. Các giá trị của loại xml.dom.minidom6 cũng có thể là

    import xml.dom.minidom
    
    document = """\
    
    Demo slideshow
    Slide title
    This is a demo
    Of a program for processing slides
    
    
    Another demo slide
    It is important
    To have more than
    one slide
    
    
    """
    
    dom = xml.dom.minidom.parseString(document)
    
    def getText(nodelist):
        rc = []
        for node in nodelist:
            if node.nodeType == node.TEXT_NODE:
                rc.append(node.data)
        return ''.join(rc)
    
    def handleSlideshow(slideshow):
        print("")
        handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
        slides = slideshow.getElementsByTagName("slide")
        handleToc(slides)
        handleSlides(slides)
        print("")
    
    def handleSlides(slides):
        for slide in slides:
            handleSlide(slide)
    
    def handleSlide(slide):
        handleSlideTitle(slide.getElementsByTagName("title")[0])
        handlePoints(slide.getElementsByTagName("point"))
    
    def handleSlideshowTitle(title):
        print(f"</span><span>{</span><span>getText</span><span>(</span><span>title</span><span>.</span><span>childNodes</span><span>)</span><span>}</span><span>")
    
    def handleSlideTitle(title):
        print(f"

    {getText(title.childNodes)}

    "
    ) def handlePoints(points): print("
      ") for point in points: handlePoint(point) print("
    "
    ) def handlePoint(point): print(f"
  • {getText(point.childNodes)}
  • "
    ) def handleToc(slides): for slide in slides: title = slide.getElementsByTagName("title")[0] print(f"

    {getText(title.childNodes)}

    "
    ) handleSlideshow(dom)
    7 khi được phép có giá trị IDL xml.etree.ElementTree0 theo đặc tả DOM từ W3C.

    • xml.dom.minidom0

    • xml.dom.minidom1

    xml.etree.ElementTree1 Bản đồ khai báo cho các biến trong phạm vi tương ứng của chúng (ví dụ: xml.etree.ElementTree2); Họ không được thay đổi.

    xml.etree.ElementTree3 hiện không được hỗ trợ trong xml.dom.minidom. Thay vào đó, xml.dom.minidom sử dụng các ngoại lệ Python tiêu chuẩn như xml.etree.ElementTree6 và xml.etree.ElementTree7.

    1

    Các đối tượng xml.etree.ElementTree8 được triển khai bằng loại danh sách tích hợp Python. Các đối tượng này cung cấp giao diện được xác định trong đặc tả DOM, nhưng với các phiên bản Python trước đó, chúng không hỗ trợ API chính thức. Tuy nhiên, chúng là nhiều hơn nữa, pythonic, so với giao diện được xác định trong các khuyến nghị của W3C.