Python 提高xml中每个值的快速方法?
我有以下xml:Python 提高xml中每个值的快速方法?,python,xml,xml-parsing,lxml,Python,Xml,Xml Parsing,Lxml,我有以下xml: <Item> <Platform>itunes</Platform> <PlatformID>102224185</PlatformID> <Info> <LanguageOfMetadata>EN</LanguageOfMetadata> <Name>Commander In Chief</Name> <Studio
<Item>
<Platform>itunes</Platform>
<PlatformID>102224185</PlatformID>
<Info>
<LanguageOfMetadata>EN</LanguageOfMetadata>
<Name>Commander In Chief</Name>
<Studio>abc</Studio>
</Info>
<Type>TVSeries</Type>
</Item>
下面是一种提升所有内容的方法,但请注意,这也将包括标记:
node = etree.fromstring(etree.tostring(item).upper())
print etree.tostring(node, pretty_print=True)
<ITEM>
<PLATFORM>ITUNES</PLATFORM>
<PLATFORMID>102224185</PLATFORMID>
<INFO>
<LANGUAGEOFMETADATA>EN</LANGUAGEOFMETADATA>
<NAME>COMMANDER IN CHIEF</NAME>
<STUDIO>ABC</STUDIO>
</INFO>
<TYPE>TVSERIES</TYPE>
</ITEM>
node=etree.fromstring(etree.tostring(item.upper())
打印etree.tostring(节点,pretty\u print=True)
ITUNES
102224185
EN
总司令
基础知识
电视连续剧
这里有一种方法可以提升所有内容,但请注意,这也包括标记:
node = etree.fromstring(etree.tostring(item).upper())
print etree.tostring(node, pretty_print=True)
<ITEM>
<PLATFORM>ITUNES</PLATFORM>
<PLATFORMID>102224185</PLATFORMID>
<INFO>
<LANGUAGEOFMETADATA>EN</LANGUAGEOFMETADATA>
<NAME>COMMANDER IN CHIEF</NAME>
<STUDIO>ABC</STUDIO>
</INFO>
<TYPE>TVSERIES</TYPE>
</ITEM>
node=etree.fromstring(etree.tostring(item.upper())
打印etree.tostring(节点,pretty\u print=True)
ITUNES
102224185
EN
总司令
基础知识
电视连续剧
您可以找到所有元素并对每个元素的文本调用upper()
:
import lxml.etree as ET
data = """<Item>
<Platform>itunes</Platform>
<PlatformID>102224185</PlatformID>
<Info>
<LanguageOfMetadata>EN</LanguageOfMetadata>
<Name>Commander In Chief</Name>
<Studio>abc</Studio>
</Info>
<Type>TVSeries</Type>
</Item>
"""
root = ET.fromstring(data)
for elm in root.xpath("//*"): # //* would find all elements recursively
elm.text = elm.text.upper()
print(ET.tostring(root))
您可以找到所有元素并对每个元素的文本调用
upper()
:
import lxml.etree as ET
data = """<Item>
<Platform>itunes</Platform>
<PlatformID>102224185</PlatformID>
<Info>
<LanguageOfMetadata>EN</LanguageOfMetadata>
<Name>Commander In Chief</Name>
<Studio>abc</Studio>
</Info>
<Type>TVSeries</Type>
</Item>
"""
root = ET.fromstring(data)
for elm in root.xpath("//*"): # //* would find all elements recursively
elm.text = elm.text.upper()
print(ET.tostring(root))
假设您可以解析XML文件,那么只需使用python中内置的字符串函数
.upper()
重写内容即可。你可以这样称呼它:
“mystring”.upper()
假设您可以解析XML文件,您可以使用python中内置的字符串函数.upper()
重写内容。你可以这样称呼它:
“mystring”.upper()
这是你如何将任何字符串上移的,所以这看起来很明显,我不知道它是否回答了你自己的问题。@cricket\u 007对,我只是演示了基本上如何将上移的字符串放回节点。这是你如何将任何字符串上移的,所以这看起来很明显,我不知道它是否回答了你自己的问题。@cricket\u 007对,我只是简单地展示了如何将上弦返回到节点中。问题只想上弦项目,而不是标签。@cricket_007我提到我假设OP可以解析XML并提取内容。我从来没有说过他/她应该upper()
一切啊,我明白你的意思,仍然不是一个完整的答案,虽然我知道,亚历克斯的答案更好。但我还是想说清楚。问题只想增加项目,而不是标签。@cricket_007我确实提到我假设OP可以解析XML并提取内容。我从来没有说过他/她应该upper()
一切啊,我明白你的意思,仍然不是一个完整的答案,虽然我知道,亚历克斯的答案更好。但我还是想说清楚,谢谢。无论出于何种原因,我必须添加以下if
语句,否则我会遇到错误:For elm in root.xpath(“//*”):if elm.text:elm.text=elm.text.upper()
谢谢。无论出于何种原因,我必须添加以下if
语句,否则我将遇到错误:For root.xpath(“//*”)中的elm:if elm.text:elm.text=elm.text.upper()
elm.tail = elm.tail.upper() if elm.tail else None