0

输入:-

<manifest>
<default revision="jb_2.5.4" remote="quic"/>
<project name="platform/vendor/google/proprietary/widevine"
         path="vendor/widevine"
         revision="refs/heads/jb_2.6"
         x-grease-customer="none"
         x-quic-dist="none"
         x-ship="none" />
<project path="vendor/widevine" name="platform/vendor/google/proprietary/bluetooth" x-ship="none" x-quic-dist="none" x-grease-customer="none"/>

</manifest>

如果存在修订标签,我正在尝试从上面的输入中获取修订值,如果不存在,则使用默认标签中的修订值,我有以下代码并遇到以下错误..任何人都可以提供输入这里有什么问题?

import shlex
import os
import sys
import json
import fileinput
import pwd
import itertools
import subprocess
from subprocess import Popen, PIPE, STDOUT
import xml.etree.ElementTree as ET
import re


def manifest_data (name):
    pattern = re.compile('refs/heads/(.*)')
    tree = ET.parse('.repo/manifests/default.xml')
    root = tree.getroot()
    project = root.find("./project[@name='%s']" % name)
    revision = project.get('revision')
    res = pattern.match(revision)
    return res.group(1)

def main ():
    branch_name = "jb_2.5.4"
    print "branch_name"
    print branch_name
    projects = ['platform/vendor/google/proprietary/widevine','platform/vendor/google/proprietary/bluetooth']
    for project in projects :
        branch = manifest_data(project)
        print branch

if __name__ == '__main__':
    main()

错误:-

  File "branch_manifest.py", line 35, in <module>
    main()
  File "branch_manifest.py", line 32, in main
    branch = manifest_data(project)
  File "branch_manifest.py", line 18, in manifest_data
    project = root.find("./project[@name='%s']" % name)
  File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 330, in find
    return ElementPath.find(self, path)
  File "/usr/lib/python2.6/xml/etree/ElementPath.py", line 186, in find
    return _compile(path).find(element)
  File "/usr/lib/python2.6/xml/etree/ElementPath.py", line 176, in _compile
    p = Path(path)
  File "/usr/lib/python2.6/xml/etree/ElementPath.py", line 93, in __init__
    "expected path separator (%s)" % (op or tag)
SyntaxError: expected path separator ([)
4

1 回答 1

1

它适用于 python2.7,但与 python2.6 有相同的异常。

您可以引用ElementTree XPath - Select Element based on attribute。它给出了一个答案:python2.6 不支持类似的语法./project[@name='%s']

于 2013-08-13T03:23:52.550 回答