Ansible Xml模块-从寄存器获取具有命名空间的Xml值
有一个pom.xml文件,我使用以下任务提取项目名称Ansible Xml模块-从寄存器获取具有命名空间的Xml值,xml,xpath,ansible,xml-parsing,Xml,Xpath,Ansible,Xml Parsing,有一个pom.xml文件,我使用以下任务提取项目名称 - name: Loading project variables from the parent Maven pom.xml xml: path: "/some/path/pom.xml" namespaces: ns: "http://maven.apache.org/POM/4.0.0" xpath: "/ns:project/ns:name&qu
- name: Loading project variables from the parent Maven pom.xml
xml:
path: "/some/path/pom.xml"
namespaces:
ns: "http://maven.apache.org/POM/4.0.0"
xpath: "/ns:project/ns:name"
content: text
register: project_name_reg
- name: "Set project name"
set_fact:
project_name: "{{ project_name_reg.matches[0] }}"
它可以工作,现在project\u name
包含:
"project_name": {
"{http://maven.apache.org/POM/4.0.0}name": "My Project Parent"
}
如何通过这个复杂的
{http://maven.apache.org/POM/4.0.0}名称
名称和名称空间?这是一个简单的词汇,但我所有的尝试都失败了。你根本不在乎那把钥匙。您可以这样做:
- name: "Set project name"
set_fact:
project_name: "{{ project_name_reg.matches[0].values()|first }}"
它更接近,但我得到
任务包含一个带有未定义变量的选项。错误是:dict\u values对象没有元素0
如果我删除最后一个[0]
,结果是:“项目名称”:“dict\u values(['myproject Parent'])”
这里是解决方案:{project\u name\u reg.匹配[0].values()| first}
请更正您的答案,我将其标记为正确的解决方案。捕捉良好;我已经更新了答案。