Minh họa việc thêm một thuộc tính name=value vào một phần tử XML Show
Ví dụ này sử dụng tệp mẫu XML tại đây. mẫu1. xml. mẫu1. tệp xml chứa nội dung này import sys import chilkat2 xml = chilkat2.Xml() success = xml.LoadXmlFile("qa_data/xml/sample1.xml") if (success != True): print(xml.LastErrorText) sys.exit() # Navigate to the "books" element: bFound = xml.FindChild2("books") if (bFound == False): print("No books child found!") sys.exit() numChildren = xml.NumChildren i = 0 while i < numChildren : # Navigate to the Nth book xml.GetChild2(i) # Display the book title: print(xml.GetAttrValue("title")) # Add a new integer attribute: # Should never fail.. xml.AddAttributeInt("bookId",i) # Add a new unread="yes" attribute: xml.AddAttribute("unread","yes") # Navigate back up to the parent: xml.GetParent2() i = i + 1 # Navigate back to the document root: xml.GetRoot2() # Save the updated document: success = xml.SaveXml("modified.xml") if (success != True): print(xml.LastErrorText) sys.exit() print(xml.GetXml()) Tìm hiểu cách bạn có thể phân tích cú pháp, khám phá, sửa đổi và điền các tệp XML bằng gói Python ElementTree, cho các vòng lặp và biểu thức XPath. Là một nhà khoa học dữ liệu, bạn sẽ thấy rằng việc hiểu XML là rất hữu ích cho cả việc quét web và thực tiễn chung trong việc phân tích cú pháp một tài liệu có cấu trúc Extensible Markup Language (XML) là ngôn ngữ đánh dấu mã hóa tài liệu bằng cách xác định một bộ quy tắc ở cả định dạng máy đọc được và con người đọc được. Được mở rộng từ SGML (Ngôn ngữ đánh dấu tổng quát hóa tiêu chuẩn), nó cho phép chúng tôi mô tả cấu trúc của tài liệu. Trong XML, chúng ta có thể định nghĩa các thẻ tùy chỉnh. Chúng ta cũng có thể sử dụng XML làm định dạng chuẩn để trao đổi thông tin
Đây là ảnh chụp nhanh của tree = ET.parse('movies.xml') 5 mà chúng tôi sẽ sử dụng cho hướng dẫn này<?xml version="1.0"?> Giới thiệu về ElementTreeCấu trúc cây XML làm cho việc điều hướng, sửa đổi và loại bỏ tương đối đơn giản về mặt lập trình. Python có một thư viện tích hợp, ElementTree, có chức năng đọc và thao tác XML (và các tệp có cấu trúc tương tự khác) Đầu tiên, nhập tree = ET.parse('movies.xml') 6. Đó là một thông lệ phổ biến để sử dụng bí danh của tree = ET.parse('movies.xml') 7import xml.etree.ElementTree as ET Phân tích dữ liệu XMLTrong tệp XML được cung cấp, có một bộ sưu tập phim cơ bản được mô tả. Vấn đề duy nhất là dữ liệu là một mớ hỗn độn. Đã có rất nhiều người quản lý khác nhau của bộ sưu tập này và mọi người đều có cách nhập dữ liệu vào tệp của riêng mình. Mục tiêu chính trong hướng dẫn này là đọc và hiểu tệp bằng Python — sau đó khắc phục sự cố Trước tiên, bạn cần đọc trong tệp có tree = ET.parse('movies.xml') 6tree = ET.parse('movies.xml') Bây giờ bạn đã khởi tạo cây, bạn nên xem XML và in ra các giá trị để hiểu cây được cấu trúc như thế nào root.tag'collection' Ở cấp cao nhất, bạn thấy rằng XML này bắt nguồn từ thẻ tree = ET.parse('movies.xml') 9root.attrib{} Đối với vòng lặpBạn có thể dễ dàng lặp lại các phần tử con (thường được gọi là "con") trong thư mục gốc bằng cách sử dụng vòng lặp "for" đơn giản for child in root: Bây giờ bạn biết rằng con cái của gốc tree = ET.parse('movies.xml') 9 đều là root.tag'collection'1. Để chỉ định thể loại, XML sử dụng thuộc tính root.tag'collection'2. Có các phim Hành động, Kinh dị và Hài theo yếu tố root.tag'collection'1 Thông thường sẽ rất hữu ích khi biết tất cả các phần tử trong toàn bộ cây. Một chức năng hữu ích để làm điều đó là root.tag'collection'4 [elem.tag for elem in root.iter()]['collection', Có một cách hữu ích để xem toàn bộ tài liệu. Nếu bạn chuyển gốc vào phương thức root.tag'collection'5, bạn có thể trả lại toàn bộ tài liệu. Trong ElementTree, phương thức này có dạng hơi lạ Vì ElementTree là một thư viện mạnh mẽ có thể diễn giải nhiều hơn chỉ XML, nên bạn phải chỉ định cả mã hóa và giải mã tài liệu mà bạn đang hiển thị dưới dạng chuỗi Bạn có thể mở rộng việc sử dụng hàm root.tag'collection'6 để giúp tìm các yếu tố quan tâm cụ thể. root.tag'collection'4 sẽ liệt kê tất cả các phần tử con bên dưới gốc khớp với phần tử được chỉ định. Tại đây, bạn sẽ liệt kê tất cả các thuộc tính của phần tử root.tag'collection'8 trong cây for movie in root.iter('movie'): Biểu thức XPathNhiều khi các phần tử sẽ không có thuộc tính, chúng sẽ chỉ có nội dung văn bản. Sử dụng thuộc tính root.tag'collection'9, bạn có thể in ra nội dung này Bây giờ, in ra tất cả các mô tả của phim for description in root.iter('description'): In ra XML rất hữu ích, nhưng XPath là ngôn ngữ truy vấn được sử dụng để tìm kiếm thông qua XML một cách nhanh chóng và dễ dàng. Tuy nhiên, việc hiểu XPath là cực kỳ quan trọng để quét và điền XML. tree = ET.parse('movies.xml') 6 có hàm root.attrib{}1 sẽ duyệt qua các phần tử con trực tiếp của phần tử được tham chiếu Tại đây, bạn sẽ tìm kiếm trên cây những bộ phim ra mắt năm 1992 for movie in root.findall("./genre/decade/movie/[year='1992']"): Hàm root.attrib{}1 luôn bắt đầu tại phần tử được chỉ định. Loại chức năng này cực kỳ mạnh mẽ để "tìm và thay thế". Bạn thậm chí có thể tìm kiếm trên các thuộc tính Bây giờ, chỉ in ra những phim có sẵn ở nhiều định dạng (một thuộc tính) import xml.etree.ElementTree as ET 0Suy nghĩ xem tại sao, trong trường hợp này, câu lệnh in trả về giá trị “Có” của root.attrib{}3. Hãy suy nghĩ về cách xác định vòng lặp "for" Mẹo. sử dụng root.attrib{}4 bên trong XPath để trả về phần tử cha của phần tử hiện tại import xml.etree.ElementTree as ET 1Sửa đổi một XMLTrước đó, tiêu đề phim là một mớ hỗn độn tuyệt đối. Bây giờ, in chúng ra một lần nữa for movie in root.iter('movie'): Sửa lỗi '2' trong Back 2 the Future. Đó phải là một vấn đề tìm và thay thế. Viết mã để tìm tiêu đề ‘Back 2 the Future’ và lưu nó dưới dạng một biến import xml.etree.ElementTree as ET 3Lưu ý rằng việc sử dụng phương thức root.attrib{}5 trả về một phần tử của cây. Phần lớn thời gian, sẽ hữu ích hơn khi chỉnh sửa nội dung trong một phần tử Sửa đổi thuộc tính root.attrib{}6 của biến phần tử Back 2 the Future thành "Back to the Future". Sau đó, in ra các thuộc tính của biến của bạn để xem sự thay đổi của bạn. Bạn có thể dễ dàng làm điều này bằng cách truy cập vào thuộc tính của một phần tử và sau đó gán một giá trị mới cho nó import xml.etree.ElementTree as ET 4Ghi lại các thay đổi của bạn vào XML để chúng được cố định vĩnh viễn trong tài liệu. In lại các thuộc tính phim của bạn để đảm bảo các thay đổi của bạn hoạt động. Sử dụng phương pháp root.attrib{}7 để làm điều này import xml.etree.ElementTree as ET 5Sửa thuộc tínhThuộc tính root.attrib{}3 không chính xác ở một số chỗ. Sử dụng tree = ET.parse('movies.xml') 6 để sửa bộ chỉ định dựa trên số lượng định dạng của phim. Đầu tiên, in thuộc tính và văn bản for child in root:0 để xem phần nào cần sửa import xml.etree.ElementTree as ET 6Có một số công việc cần phải được thực hiện trên thẻ này Bạn có thể sử dụng biểu thức chính quy để tìm dấu phẩy — điều này sẽ cho biết thuộc tính root.attrib{}3 nên là "Có" hay "Không". Việc thêm và sửa đổi các thuộc tính có thể được thực hiện dễ dàng bằng phương pháp for child in root:2 import xml.etree.ElementTree as ET 7yếu tố di chuyểnMột số dữ liệu đã được đặt sai thập kỷ. Sử dụng những gì bạn đã học về XML và tree = ET.parse('movies.xml') 6 để tìm và sửa các lỗi dữ liệu trong thập kỷSẽ rất hữu ích nếu bạn in ra cả thẻ for child in root:4 và thẻ for child in root:5 trong toàn bộ tài liệu import xml.etree.ElementTree as ET 8Hai năm nhầm thập kỷ là những bộ phim từ những năm 2000. Chỉ ra những bộ phim đó là gì, sử dụng biểu thức XPath import xml.etree.ElementTree as ET 9Bạn phải thêm thẻ thập kỷ mới, thập niên 2000, vào thể loại Hành động để di chuyển dữ liệu X-Men. Phương pháp for child in root:6 có thể được sử dụng để thêm thẻ này vào cuối XML tree = ET.parse('movies.xml') 0Bây giờ nối phim X-Men vào những năm 2000 và loại bỏ nó khỏi những năm 1990, lần lượt sử dụng for child in root:7 và for child in root:8 tree = ET.parse('movies.xml') 1Xây dựng tài liệu XMLTốt, vì vậy về cơ bản bạn đã có thể chuyển toàn bộ một bộ phim sang một thập kỷ mới. Lưu các thay đổi của bạn trở lại XML tree = ET.parse('movies.xml') 2Kết luậnElementTree là một thư viện Python quan trọng cho phép bạn phân tích cú pháp và điều hướng một tài liệu XML. Sử dụng ElementTree chia nhỏ tài liệu XML theo cấu trúc cây dễ làm việc với. Khi nghi ngờ, hãy in nó ra (______13_______9) - sử dụng câu lệnh in hữu ích này để xem toàn bộ tài liệu XML cùng một lúc Làm cách nào để thêm thuộc tính vào tệp XML bằng Python?Các hàm tạo cho Phần tử và Phần tử con bao gồm **extra , chấp nhận các thuộc tính làm đối số từ khóa . Điều này cho phép bạn thêm một số thuộc tính tùy ý. Bạn cũng có thể sử dụng. được đặt để thêm thuộc tính vào phần tử có sẵn.
Làm cách nào để cập nhật giá trị thuộc tính XML trong Python?Giải pháp. Trước tiên, chúng tôi phân tích cú pháp tệp xml và thực hiện thao tác chứa chuỗi để kiểm tra xem tên sách có chứa “Python“. Nếu chuỗi chứa từ khóa, chúng ta sử dụng phương thức set() để thay đổi giá trị thuộc tính . Chạy mã ví dụ trên và bạn sẽ thấy tệp xml gốc đã được sửa đổi.
Làm cách nào để ghi dữ liệu vào tệp XML bằng Python?Bây giờ để phù hợp với văn bản bên trong phần tử con, chúng ta phải sử dụng mục. văn bản và đặt giá trị chuỗi bằng toán tử gán. Nối đối tượng mục con với đối tượng gốc và ghi tệp XML bằng phương thức write() và chuyển tên tệp dưới dạng chuỗi
Làm cách nào để đọc giá trị thuộc tính trong XML bằng Python?Lấy giá trị của các thuộc tính có liên quan
. findall(level) , trong đó level là vị trí mong muốn ( |