Coder Social home page Coder Social logo

"Xpath /settings/setting[@id="setting.key"]/@value does not reference a node!" when trying to set an attribute value about ansible-xml HOT 7 CLOSED

cmprescott avatar cmprescott commented on July 29, 2024
"Xpath /settings/setting[@id="setting.key"]/@value does not reference a node!" when trying to set an attribute value

from ansible-xml.

Comments (7)

Hubbitus avatar Hubbitus commented on July 29, 2024 2

I also come here with intention fill bug...
But it seems we misunderstood (and doc has not useful description and examples). I have looked at code and it intended to work in other way (on my mind used in question much more sane and I also understand and try it on that manner). So in current implementation it works for me if I pass separate attribute value like:

- name: ensure required setting
  xml:
    file: .../settings.xml
    xpath: '/settings/setting[@id="setting.key"]'
    attribute: value
    value: "some new value"

Please note few thing there:

  • xpath is always element
  • attribute has name without @

from ansible-xml.

codyro avatar codyro commented on July 29, 2024

I'm also having the issue described above when trying to set a value for an attribute. After peaking at the code it doesn't seem to account for changing an attribute?

from ansible-xml.

add1ct3dd avatar add1ct3dd commented on July 29, 2024

Any solutions to this?

from ansible-xml.

cmprescott avatar cmprescott commented on July 29, 2024

I'll use this issue to track updating the documentation's clarity concerning this.

from ansible-xml.

dagwieers avatar dagwieers commented on July 29, 2024

The xml module is upstream now (and ships with Ansible v2.4).

Please close this issue, and retest against the new upstream xml module. If needed, open a new issue at: https://github.com/ansible/ansible/issues

from ansible-xml.

dagwieers avatar dagwieers commented on July 29, 2024

@Hubbitus Are you willing to create a PR for this at: https://github.com/ansible/ansible ?

I just verified the same thing. This does not work:

[dag@moria ansible.git]$ ansible -m xml --diff -a 'xpath=/settings/setting[@id="setting.key"]/@value value=true file=/tmp/test.xml ' -C localhost
localhost | FAILED! => {
    "changed": false, 
    "failed": true, 
    "msg": "Xpath /settings/setting[@id=\"setting.key\"]/@value does not reference a node! tree is <settings>\n    <setting id=\"setting.key\" value=\"\"/>\n</settings>\n"
}

[dag@moria ansible.git]$ ansible -m xml --diff -a 'xpath=/settings/setting[@id="setting.key"]/@value attribute=value value=true file=/tmp/test.xml' -C localhost
localhost | FAILED! => {
    "changed": false, 
    "failed": true, 
    "msg": "Xpath /settings/setting[@id=\"setting.key\"]/@value does not reference a node! tree is <settings>\n    <setting id=\"setting.key\" value=\"\"/>\n</settings>\n"
}

But this works fine:

[dag@moria ansible.git]$ ansible -m xml --diff -a 'xpath=/settings/setting[@id="setting.key"] attribute=value value=true file=/tmp/test.xml' -C localhost
--- before
+++ after
@@ -1,4 +1,4 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <settings>
-    <setting id="setting.key" value="false"/>
+    <setting id="setting.key" value="true"/>
 </settings>

localhost | SUCCESS => {
    "actions": {
        "namespaces": {}, 
        "state": "present", 
        "xpath": "/settings/setting[@id=\"setting.key\"]"
    }, 
    "changed": true, 
    "failed": false, 
}

from ansible-xml.

dagwieers avatar dagwieers commented on July 29, 2024

I have updated the documentation. Setting attribute values using xpath only would be very useful, but is a feature request. We are welcoming anyone who can do this.

from ansible-xml.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.