Python 提高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

我有以下xml:

<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