【发布时间】:2020-06-22 18:39:03
【问题描述】:
我有一个 xml 文件
<PhysicalTable mdsid="mc000002a-469e-1667-ba67-0a890c480000">
<name>FCT_PBCS</name>
<xmlnsxsi>http://www.w3.org/2001/XMLSchema-instance</xmlnsxsi>
<xmlns>http://www.oracle.com/obis/repository</xmlns>
<type>none</type>
<maxConn>0</maxConn>
<containerRef>"/oracle/bi/server/base/Schema/80000002-469e-1667-ba67-0a890c480000.xml#m80000002-469e-1667-ba67-0a890c480000"</containerRef>
</PhysicalTable>
<PhysicalColumn mdsid = "mc000002b-469e-1667-ba67-0a890c480000">
<name>ACCT_ID</name>
<dataType>DOUBLE </dataType>
<precision>22</precision>
<nullable>true</nullable>
<specialType>none</specialType>
</PhysicalColumn>
<PhysicalColumn mdsid = "mc000002c-469e-1667-ba67-0a890c480000">
<name>CURR_ID</name>
<dataType>DOUBLE</dataType>
<precision>22</precision>
<nullable>true</nullable>
<specialType>none</specialType>
</PhysicalColumn>
<PhysicalColumn mdsid = "mc000002d-469e-1667-ba67-0a890c480000">
<name>DATE_KEY</name>
<dataType>DOUBLE</dataType>
<precision>22</precision>
<nullable>true</nullable>
<specialType>none</specialType>
</PhysicalColumn>
我正在尝试解析并将所有值放入数据框中
for node in xroot.findall("PhysicalColumn"):
s_mdsid = node.attrib.get("mdsid")
s_name = node.find("name").text if node is not None else None
s_dataType = node.find("dataType").text if node is not None else None
s_precision = node.find("precision").text if node is not None else None
s_nullable = node.find("nullable").text if node is not None else None
s_specialType = node.find("specialType").text if node is not None else None
rows.append({"mdsid": s_mdsid, "name": s_name,
"dataType": s_dataType, "precision": s_precision , "nullable" : s_nullable ,"specialType" : s_specialType})
out_df1 = pd.DataFrame(rows, columns = df_cols1)
但是 out_df1 只给出了最后一个孩子的价值,它没有迭代。但是当我打印它时,它给了我整个儿童清单。我必须放入一个数据框并复制到excel。有人可以帮忙吗?
我得到的输出
mdsid name dataType precision nullable specialType
0 mc0000037-469e-1667-ba67-0a890c480000 YEAR_YY DOUBLE 22 true none
我期待
mdsid name dataType precision nullable specialType
0 mc000002b-469e-1667-ba67-0a890c480000 ACCT_ID DOUBLE 22 true none
1 mc000002b-469e-1667-ba67-0a890c480000 CURR_ID DOUBLE 22 true none
....
13 mc0000037-469e-1667-ba67-0a890c480000 YEAR_YY DOUBLE 22 true none
谢谢, 奥鲁什
【问题讨论】:
-
检查 rows.append 行的缩进,也许?