Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在为指定项目的修订标记读取xml文件_Python - Fatal编程技术网

Python 正在为指定项目的修订标记读取xml文件

Python 正在为指定项目的修订标记读取xml文件,python,Python,我有一个示例.xml文件,如下所示。我需要扫描项目“kernel/msm”的“revision”标记,然后 在“refs/heads”之后打印单词。下面有一个示例.xml文件和xml输出?我可以在稍后找出python部分,有人可以提供如何实现这一点的输入吗 输入:- Assume there is a variable project like below project='kernel/msm' sample.xml <?xml version="1.0" encoding

我有一个示例.xml文件,如下所示。我需要扫描项目“kernel/msm”的“revision”标记,然后 在“refs/heads”之后打印单词。下面有一个示例.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
假设存在如下可变项目
project='kernel/msm'
sample.xml
......
预期产出:-
msm-3.4
示例代码:-
project='kernel/msm'
#打开xml文件
将open('./test.xml',r')作为f:
#获取分支和项目
对于项目中的线路:
如果“修订”中的行:
分支=行。拆分('/')[-1]
印刷部
谢谢


例如,您必须使用根节点包装xml数据,否则将引发解析错误。

能否附上一些您尝试使用的示例代码,并说明为什么这些代码不适用于您?这里没有太多内容。@legostrmtroopr-我使用xml专用模块更新了示例代码,如
xml.etree.ElementTree
@zhangyangyu-它是内置模块吗?你能建议如何使用它吗?是的。它是一个内置模块。提供了一些示例。@user2125827是否有一种方法可以将上述代码更改为使用变量project='kernel/msm'…我只想使上述代码成为各种项目的通用代码..没问题。我已经更新了答案以使用变量。@user2125827
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))