Ansible Xml模块-从寄存器获取具有命名空间的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

有一个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"
    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}
请更正您的答案,我将其标记为正确的解决方案。捕捉良好;我已经更新了答案。