Hướng dẫn python xml to table - python xml vào bảng

Tôi đang cố gắng phân tích XML vào cấu trúc giống như bảng trong Python.Hãy tưởng tượng XML như thế này:



  element 1
  element 2
  
    subElement 3
  

Tôi muốn có kết quả như thế này:

KEY                       | VALUE
base.element1             | "element 1"
base.element2             | "element 2"
base.element3.subElement3 | "subElement 3"

Tôi đã thử sử dụng xml.etree.celementtree, sau đó các hàm được mô tả ở đây làm thế nào để chuyển đổi chuỗi XML thành từ điển trong Python?

Có bất kỳ chức năng nào có thể làm điều này?Tất cả các câu trả lời tôi tìm thấy được viết cho các sơ đồ XML cụ thể và sẽ cần được chỉnh sửa cho từng sơ đồ XML mới.Để tham khảo, trong r, thật dễ dàng với các gói XML và XML2 và chức năng xmltolist.

Hỏi ngày 18 tháng 8 năm 2017 lúc 11:25Aug 18, 2017 at 11:25Aug 18, 2017 at 11:25

Hướng dẫn python xml to table - python xml vào bảng

Michal Hruškamichal HruškaMichal HruškaMichal Hruška

4042 Huy hiệu vàng6 Huy hiệu bạc14 Huy hiệu đồng2 gold badges6 silver badges14 bronze badges2 gold badges6 silver badges14 bronze badges

4

Tôi đã có kết quả cần thiết bằng cách sử dụng tập lệnh sau.

Tệp XML:::



  element 1
  element 2
  
    subElement 3
  

Mã Python:::

import pandas as pd
from lxml import etree

data = "C:/Path/test.xml"

tree = etree.parse(data)

lstKey = []
lstValue = []
for p in tree.iter() :
    lstKey.append(tree.getpath(p).replace("/",".")[1:])
    lstValue.append(p.text)

df = pd.DataFrame({'key' : lstKey, 'value' : lstValue})
df.sort_values('key')

Result:::

Đã trả lời ngày 22 tháng 8 năm 2017 lúc 10:38Aug 22, 2017 at 10:38Aug 22, 2017 at 10:38

Michal Hruškamichal HruškaMichal HruškaMichal Hruška

4042 Huy hiệu vàng6 Huy hiệu bạc14 Huy hiệu đồng2 gold badges6 silver badges14 bronze badges2 gold badges6 silver badges14 bronze badges

Tôi đã có kết quả cần thiết bằng cách sử dụng tập lệnh sau.

 
>
   title="Lucene Basics(or Fundamentals)">
     title="Lucene Searching">
       type="internal" title="Lucene Scoring">
         title="How Lucene scoring works" seotitle="how-lucene-scoring-works">
        >
      >    
       type="terminal" title="" seotitle="">
         title="hello world" seotitle="how-lucene-scoring-works">
        >
      >
    >
  >
 
   title="Lucene Index">
     title="Lucene Searching">
       type="internal" title="Lucene Scoring">
         title="How Lucene indexing works" seotitle="how-lucene-indexing-works">
        >
         title="Lucene Index tutorial" seotitle="lucene-index-tutorial">
        >
      >    
       type="terminal" title="" seotitle="">
      >
    >
  >  
>
 

Tệp XML::

 
  version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      match="/">
          class="toc-contents">
             >
                 />
             >
         >
     >
      match="part">
         >
           class="toc-part">
              > select="@title"/>>
              >
                   select="chapter"/>
              >
          >
         >
     >
      match="chapter">
         >
           class="toc-chapter">
              > select="@title"/>>
              >
                   select=".//leaf"/>
              >
          >             
         >
     >
      match="leaf">
 
         >
             >
                  name="href">
                     http://makble.com/ select="@seotitle"/>
                >
               select="@title"/>>
         >
     >
 >
 

Mã Python::

 
import lxml.html
from lxml import etree
 
xslt_doc = etree.parse("test-xslt.xslt")
xslt_transformer = etree.XSLT(xslt_doc)
 
source_doc = etree.parse("toc-test.xml")
output_doc = xslt_transformer(source_doc)
 
print(str(output_doc))
output_doc.write("output-toc.html", pretty_print=True)
 

Đã trả lời ngày 22 tháng 8 năm 2017 lúc 10:38Aug 22, 2017 at 10:38