gpt4 book ai didi

xml - 如何使用 shell 脚本读取 XML 并写入文本文件?

转载 作者:行者123 更新时间:2023-11-29 09:50:49 28 4
gpt4 key购买 nike

如何在Shell脚本中读取XML标签及其值?我搜索了一下,发现只有知道标签名才可以。

但是,我想要一个脚本来读取 XML 中的所有标签(重复标签),其中包含值。在我的 XML 中,标签可能会改变。所以,我想要可以适用于不同 XML 的脚本。

<Data>
<Employees>

<Employee location = "Paris">
<Name> Andy </Name>
<ID> 101 </ID>
</Employee>

<Employee location = "Germany">
<Name> Batman </Name>
<ID> 202 </ID>
</Employee>

</Employees>
</Data>

我想读取 XML 并写入文本文件,如下所示:

Name : Alex
ID: 101
Location: Paris

Name : Batman
ID: 202
Location: Germany

最佳答案

正如我在评论中所说,除了最简单的 XML 文件之外,shell 不适用于所有文件。不过,以下 Python 脚本将处理您向其抛出的任何格式良好的 XML:

import xml.parsers.expat
import sys

def start_element(name, attrs):
print('Start element:', name)
for attribute_name, attribute_value in attrs.items():
print('Attribute:', attribute_name, attribute_value)

def end_element(name):
print('End element:', name)

def char_data(data):
data = str(data).strip()
if data:
print('Character data:', data)

p = xml.parsers.expat.ParserCreate()

p.StartElementHandler = start_element
p.EndElementHandler = end_element
p.CharacterDataHandler = char_data

with open(sys.argv[1], 'rb') as xmlfile:
p.ParseFile(xmlfile)

它几乎是从 documentation 中逐字复制的。 。您可以操作 start_elementend_elementchar_data 三个函数来满足您的需求。 (也就是说,到目前为止,它们不会产生您指定的确切输出,但可以通过一些努力进行调整以实现这一点。)

这样调用它:

python3 script_above.py your_xml_file.xml

关于xml - 如何使用 shell 脚本读取 XML 并写入文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45816131/

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