{"id":307504,"date":"2021-01-15T00:39:06","date_gmt":"2021-01-14T16:39:06","guid":{"rendered":"http:\/\/4563.org\/?p=307504"},"modified":"2021-01-15T00:39:06","modified_gmt":"2021-01-14T16:39:06","slug":"%e5%86%99%e4%ba%86%e4%b8%aa%e6%8a%8a-xml-%e7%9a%84-tag-%e8%a7%a3%e6%9e%90%e7%9b%ae%e5%bd%95%e6%a0%91%e7%9a%84%e5%b0%8f%e8%84%9a%e6%9c%ac%ef%bc%8c-%e5%90%84%e4%bd%8d%e5%a4%a7%e4%bd%ac%e6%8f%90%e7%82%b9","status":"publish","type":"post","link":"http:\/\/4563.org\/?p=307504","title":{"rendered":"\u5199\u4e86\u4e2a\u628a xml \u7684 tag \u89e3\u6790\u76ee\u5f55\u6811\u7684\u5c0f\u811a\u672c\uff0c \u5404\u4f4d\u5927\u4f6c\u63d0\u70b9\u610f\u89c1"},"content":{"rendered":"<div>\n<div>\n<div>\n<h1>                  \u5199\u4e86\u4e2a\u628a xml \u7684 tag \u89e3\u6790\u76ee\u5f55\u6811\u7684\u5c0f\u811a\u672c\uff0c \u5404\u4f4d\u5927\u4f6c\u63d0\u70b9\u610f\u89c1               <\/h1>\n<p> <\/p>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : xchaoinfo <\/span>  <span><i><\/i> 4<\/span> <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div isfirst=\"1\"> <\/p>\n<p>\u6c42\u95ee\uff0c \u5404\u4f4d\u5927\u4f6c\u6709\u6ca1\u6709\u66f4\u597d\u7684\u5b9e\u73b0\u65b9\u5f0f<\/p>\n<pre><code> \"\"\"\u89e3\u6790 xml \u7684\u7ed3\u6784\u4e3a\u76ee\u5f55\u6811\uff0c\u80fd\u591f\u5feb\u901f\u7684\u5bf9 xml \u7684\u7ed3\u6784\u6709\u57fa\u672c\u7684\u4e86\u89e3\u3002\u8fd9\u4e5f\u662f nonlocal \u65b0\u5173\u952e\u5b57\u7684\u4e00\u4e2a demo \"\"\" from io import BytesIO  from lxml import etree   def init_xpath(page_source: str):     \"\"\"page_source \u7684 xml \u6587\u672c\u8f6c\u4e3a\u53ef\u4ee5\u89e3\u6790\u7684 etree \u5bf9\u8c61     \"\"\"     xml_root = etree.parse(BytesIO(page_source.encode()))     return xml_root   def fmt(fg):     \"\"\"\u683c\u5f0f\u5316\u8f93\u51fa\"\"\"     print(\"-\" * fg, end=\"\")   def tree_xml(root, result, flags=0, step=2):     result.append((flags, root))      def tree(root):         nonlocal flags         ch_root = root.getchildren()         if ch_root:             flags += step             for ch in ch_root:                 tree_xml(ch, result, flags)         else:             pass     tree(root)     return result   def main():     data = \"\"\"     &lt;xml&gt;         &lt;aa&gt;             &lt;bb&gt;&lt;\/bb&gt;             &lt;cc&gt;                 &lt;a11&gt;&lt;\/a11&gt;                 &lt;a22&gt;                     &lt;mue&gt;&lt;\/mue&gt;                 &lt;\/a22&gt;             &lt;\/cc&gt;             &lt;dd&gt;&lt;\/dd&gt;         &lt;\/aa&gt;         &lt;ee&gt;             &lt;ff&gt;&lt;\/ff&gt;         &lt;\/ee&gt;     &lt;\/xml&gt;     \"\"\"     xml_root = init_xpath(data)     res_xml = tree_xml(xml_root.getroot(), [])     for fg, _root in res_xml:         fmt(fg)         print(_root.tag)   if __name__ == '__main__':     main() <\/code><\/pre>\n<p>\u6267\u884c\u7ed3\u679c\u662f\u8fd9\u6837\u7684<\/p>\n<pre><code>xml --aa ----bb ----cc ------a11 ------a22 --------mue ----dd --ee ----ff  <\/code><\/pre>\n<\/p><\/div>\n<div> <b>\u5927\u4f6c\u6709\u8a71\u8aaa<\/b> (<span>2<\/span>)        <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<ul>\n<li data-pid=\"5056287\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : jalena <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u6839\u636e\u6211\u8fd9\u4e48\u4e9b\u5e74\u7684\u5f00\u53d1\u7ecf\u9a8c\uff0c\u662f\u5426\u6709\u4e00\u4e2a getElement method \uff1f\uff1f                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"5056288\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : xchaoinfo <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @jalena \u5e76\u4e0d\u662f\u5355\u7eaf\u7684\u83b7\u53d6\u6240\u6709\u7684 Elements\uff0c \u8fd8\u8981\u5c42\u7ea7\u7ed3\u6784\uff0c\u4fbf\u4e8e\u683c\u5f0f\u5316\u7684\u8f93\u51fa                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li>\n","protected":false},"excerpt":{"rendered":"<p>\u5199\u4e86\u4e2a\u628a xml \u7684 tag \u89e3\u6790&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/307504"}],"collection":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=307504"}],"version-history":[{"count":0,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/307504\/revisions"}],"wp:attachment":[{"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=307504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=307504"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=307504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}