按xml中的字段内容拆分条目

时间:2015-01-05 06:56:38

标签: xml

在数据输入错误之后,我的XML看起来有点像这样:

<lift>
  <header> ... </header>
  <entry>
    <lexical-unit>
      <form lang="grt"><text>Apdala /Apanga</text></form>
    </lexical-unit>
    <trait  name="morph-type" value="phrase"/>
    <sense>
      <definition>
        <form lang="hi"><text>स्वयं</text></form>
      </definition>
    </sense>
  </entry>
  <entry>
    ...
  </entry>
  ⋮
</lift>

text下的<form lang="grt">元素中有正斜杠我希望在斜杠上分割这个字段(并修剪空格)并创建一个全新的entry元素复制entry元素的其余内容,但在上面的例子中,Apalda作为一个条目的文本,Apanga作为另一个条目的文本。可能没有正斜杠,在这种情况下保持条目不变,或者不止一个,在这种情况下为该字符串的每个标记创建一个新的entry

我不介意我用什么语言或脚本来做这件事,但是不要下载任何大型框架等等会很好。这是一次性的工作,不要指望这样做再次。我正在使用Ubuntu 14.04并且已经安装了常用的开发人员工具。

1 个答案:

答案 0 :(得分:0)

以下是python中的答案

import xml.etree.ElementTree as etree
from copy import deepcopy
tree = etree.parse('my xml file')
root = tree.getroot()
entries = root.findall('entry')
for entry in entries:
    problem_string = entry.find('lexical-unit').find('form').find('text').text
    tokens = problem_string.split('/')
    for token in tokens:
        entry.find('lexical-unit').find('form').find('text').text = token.strip()
        if token != tokens[-1]:
            entry = deepcopy(entry)
            root.append(entry)
tree.write('my parsed xml file', 'UTF-8')

它找到问题字符串并将其拆分在斜杠上,然后,对于每个标记,将其剥离并将其插回到条目中的相同位置,从而创建条目的深层副本。