快速上升xml中的每个值?

时间:2016-08-12 20:28:58

标签: python xml xml-parsing lxml

我有以下xml:

UPPER

<Item> <Platform>ITUNES</Platform> <PlatformID>102224185</PlatformID> <Info> <LanguageOfMetadata>EN</LanguageOfMetadata> <Name>COMMANDER IN CHIEF</Name> <Studio>ABC</Studio> </Info> <Type>TVSERIES</Type> </Item> 所有值的最快捷方式是什么?例如:

<input type="text" ng-init="Id='1'"  ng-model="Id" />

2 个答案:

答案 0 :(得分:4)

您可以找到所有元素并在每个元素的文本上调用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))

打印:

<Item>
  <Platform>ITUNES</Platform>
  <PlatformID>102224185</PlatformID>
  <Info>
    <LanguageOfMetadata>EN</LanguageOfMetadata>
    <Name>COMMANDER IN CHIEF</Name>
    <Studio>ABC</Studio>
  </Info>
  <Type>TVSERIES</Type>
</Item>

这虽然不包括例如当你有一个元素尾部的情况 - 例如拥有<Studio>ABC</Studio>test而非<Studio>ABC</Studio>。为了支持这一点,也将以下内容放在for循环中:

elm.tail = elm.tail.upper() if elm.tail else None

答案 1 :(得分:-1)

假设您可以解析XML文件,您可以使用python中内置的.upper()函数重写内容。你可以这样称呼它: "mystring".upper()