Tôi thực sự đã viết một thư viện thực hiện mọi thứ theo cách bạn tưởng tượng. Thư viện được gọi là "xe" và bạn có thể lấy nó từ: http://home.avvanta.com/~steveha/xe.html
xe có thể nhập XML để cho phép bạn làm việc với dữ liệu theo cách hướng đối tượng. Nó thực sự sử dụng xml.dom.minidom để thực hiện phân tích cú pháp, nhưng sau đó nó đi qua cây kết quả và gói dữ liệu vào các đối tượng xe.
EDIT: OK, tôi đã tiếp tục và triển khai ví dụ của bạn trong xe, vì vậy bạn có thể xem cách hoạt động. Dưới đây là các lớp để triển khai XML bạn đã hiển thị:
import xe
class Node(xe.TextElement):
def __init__(self, text="", value=None):
xe.TextElement.__init__(self, "node", text)
if value is not None:
self.attrs["value"] = value
class Root(xe.NestElement):
def __init__(self):
xe.NestElement.__init__(self, "root")
self.node = Node()
Và đây là ví dụ về cách sử dụng ở trên. Tôi đặt XML mẫu của bạn vào một tệp có tên là "example.xml", nhưng bạn cũng có thể đặt nó vào một chuỗi và truyền chuỗi đó.
>>> root = Root()
>>> print root
<root/>
>>> root.import_xml("example.xml")
<Root object at 0xb7e0c52c>
>>> print root
<root>
<node value="30">text</node>
</root>
>>> print root.node.attrs["value"]
30
>>>
Lưu ý rằng trong ví dụ này, loại "giá trị" sẽ là một chuỗi. Nếu bạn thực sự cần thuộc tính của một kiểu khác, điều đó cũng có thể xảy ra với một chút công việc, nhưng tôi không bận tâm ví dụ này. (Nếu bạn nhìn vào PyFeed, có một lớp cho OPML có thuộc tính không phải là văn bản.)
XPath có được tính là thân thiện với người dùng không? http://stackoverflow.com/questions/8692/how-to-use-xpath-in-python – Welbog
Tôi muốn được rất nhiều quan tâm đến một phiên bản Java này! – Federer