-1

以下のように sample.xml ファイルがあります。プロジェクト「kernel/msm」の「リビジョン」タグをスキャンし、「refs/heads」の後に単語を出力する必要があります。以下に sample.xml ファイルと xml があります。出力?私は後でPythonの部分を理解することができます.これをどのように行うことができるかについての入力を提供できますか?

入力:-

Assume there is a variable project like below

project='kernel/msm'

sample.xml

    <?xml version="1.0" encoding="utf-8"?>
    <project name="platform/vendor/google/proprietary/code"
             path="vendor/widevine"
             revision="refs/heads/ab_mr"
             x-grease-customer="none"
             x-quic-dist="none"
             x-ship="none" />
    <!-- test Projects -->
    <project name="kernel/msm"
             path="kernel"
             revision="refs/heads/msm-3.4"
             x-grease-customer="none"
             x-quic-dist="la"
             x-ship="oss" />
    ......

    EXPECTED OUTPUT:-

    msm-3.4

Sample code:-

project='kernel/msm'
#open xml file
with open('./test.xml', 'r') as f:
    #get the branch and project
    for line in project :
        if line in 'revision':
            branch = line.split('/')[-1]
print branch

ありがとう

4

1 に答える 1

1
import xml.etree.ElementTree as ET
import re

temp = 'refs/heads/'
name = 'kernel/msm'

pattern = re.compile('%s(.*)' % temp)
tree = ET.parse('sample.xml')
root = tree.getroot()

project = root.find("./project[@name='%s']" % name)
revision = project.get('revision')

res = pattern.match(revision)
print(res.group(1))

xml データをルート ノード (<data> など) でラップする必要があります。そうしないと、解析エラーが発生します。

于 2013-07-09T05:55:09.523 に答える