gpt4 book ai didi

python - 使用 ElementTree 解析任意 XML 文件

转载 作者:数据小太阳 更新时间:2023-10-29 02:06:38 35 4
gpt4 key购买 nike

我有一个模板 XML 文件,根据我的程序的输入,我必须生成一个新的 XML 文件。该模板包含需要根据输入数据重复的部分。但是我不一定知道这些部分的结构或者它们有多少层嵌套。我无法弄清楚如何以任意方式读取模板文件,他们会让我填充它然后输出它。这是模板文件的一部分:

<Target_Table>
<Target_Name>SF1_T1</Target_Name>
<Target_Mode>
<REP>
<Target_Location_To_Repeat>
<XLocation>nextXREL</XLocation>
<YLocation>nextYREL</YLocation>
</Target_Location_To_Repeat>
<Target_Location_To_Repeat>
<XLocation>nextXREL</XLocation>
<YLocation>nextYREL</YLocation>
</Target_Location_To_Repeat>
</REP>
</Target_Mode>
<Target_Repetitions>1</Target_Repetitions>
<Meas_Window>
<Window_Size>
<XLocation>FOV</XLocation>
<YLocation>FOV</YLocation>
</Window_Size>
<Window_Location>
<XLocation>firstXREL</XLocation>
<YLocation>firstYREL</YLocation>
</Window_Location>
</Meas_Window>
<Box_Orientation>90</Box_Orientation>
<First_Feature Value="Space" />
<Meas_Params_Definition>
<Number_Of_Lines Value="Auto" />
<Number_Of_Pixels_Per_Line Value="Auto" />
<Averaging_Factor Value="1" />
</Meas_Params_Definition>
<Number_Of_Edges>1</Number_Of_Edges>
<Edge_Pair>
<Edge_Pair_Couple>
<First_Edge>1</First_Edge>
<Second_Edge>1</Second_Edge>
</Edge_Pair_Couple>
<Nominal_Corrected_Value>0</Nominal_Corrected_Value>
</Edge_Pair>
<Categories>
<Material_Type />
<Meas_Type />
<Category_Type />
<Other_Type />
</Categories>
<Bias>0</Bias>
<Template_Target_Name>SF_IMAQ_Template_Target</Template_Target_Name>
<Template_Target_PPL>
<Process>PC2</Process>
<Product>PD2</Product>
<Layer>L2</Layer>
</Template_Target_PPL>
<Meas_Auto_Box>
<Error_Code>0</Error_Code>
<Measured_CD>0</Measured_CD>
<Constant_NM2Pix>true</Constant_NM2Pix>
</Meas_Auto_Box>
<Meas_Box_Pix_Size_X>PixelSize</Meas_Box_Pix_Size_X>
<Macro_CD>0</Macro_CD>
</Target_Table>

我需要多次重复整个 Target_Table 部分,并且在每个 Target_Table 中我需要多次重复 REP 部分。我想编写我的程序,以便如果模板发生变化(例如,添加了更多级别的嵌套),我不必更改我的程序。但在我看来,我必须完全了解文件的结构才能将其读入并吐出。那是真的还是我在这里遗漏了什么?有没有办法编写一个程序来读取具有未知标签和未知嵌套级别的文件?

最佳答案

使用元素树:

import xml.etree.ElementTree as et

filehandler = open("file.xml","r")
raw_data = et.parse(filehandler)
data_root = raw_data.getroot()
filehandler.close()

for children in data_root:
for child in children:
print(child.tag, child.text, children.tag, children.text)

这将使您大致了解 XML 标签和标签内的相关文本。您可以添加更多循环以进一步进入树中,并执行检查以查看是否有任何子级包含更多级别。当 XML 标记的名称不同并且不遵循已知标准时,我发现此方法很有用。

关于python - 使用 ElementTree 解析任意 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15512803/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com