我在本地文件中使用XML,该文件是获得POST
REST
服务<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<singleElement>
<subElementX>XYZ</subElementX>
</singleElement>
<repeatingElement id="11" name="Joe"/>
<repeatingElement id="12" name="Mary"/>
</root>
的最终邮件的模板。该脚本在发布之前预先处理模板数据。
所以模板看起来像这样:
repeatingElement
消息XML应该看起来相同,只是xmlData = None
with open('conf//test1.xml', 'r') as xmlFile:
xmlData = xmlFile.read()
xmlSoup = BeautifulSoup(xmlData, 'html.parser')
repElemList = xmlSoup.find_all('repeatingelement')
for repElem in repElemList:
print("Processing repElem...")
repElemID = repElem.get('id')
repElemName = repElem.get('name')
# now I do something with repElemID and repElemName
# and no longer need it. I would like to replace it with <somenewtag/>
# and dump what is in the soup object back into a string.
# is it possible with BeautifulSoup?
标记需要替换为其他内容(脚本根据现有标记中的属性生成的XML)。
到目前为止,这是我的脚本:
html.parser
我可以用其他东西替换重复元素,然后将汤对象转储到我可以发布到REST API的新字符串中吗?
注意:我正在使用$price=number_format($special_price,2,'.','');
,因为我can't get the xml parser to work但它运行正常,理解HTML比XML解析更宽松。
答案 0 :(得分:1)
您可以使用.replace_with()
和.new_tag()
方法:
for repElem in repElemList:
print("Processing repElem...")
repElemID = repElem.get('id')
repElemName = repElem.get('name')
repElem.replace_with(xmlSoup.new_tag("somenewtag"))
然后,您可以使用str(soup)
或soup.prettify()
转储“汤”。