i'am testing an xml structure:

<Articles>


...


   <Article ID="333">

     <author>Paul</author>

     <title>i hate xpath </title>

        <child1>bla</child1>

       <child2>blabla
          <subchild>
             <subsubchild DEEP = "Attribute"></subsubchild>  //this is the value i wanna update and my nightmare
          </subchild>
       </child2>

       <child3>testing</child3>

   </Article> 
...

</Articles>

what xpath expression will fetch and update (change) the subsubchild attrib node value ? i am mostly concerned with fetching and updating sub values of any node, no matter how deeply or superficially located, if the parent ID (333 in this case). is known ? currently i have used :

$query= "//*[@ID=333]//*node()[@DEEP and @DEEP = "Attribute"]";
$outcome = $xml->xpath($query);
    echo isset($outcome[0][0]) ? "found" : "unavailable";

and several more related xpressions, they're all fraustrating my efforts with "Invalid expression" error, reported as an output. can anyone be of help please ?

The expression problem is *node(); this works:

//*[@ID=333]//*[@DEEP="Attribute"]

Also note there's no need to check that the attribute exists separately from the value check ([@DEEP and...) .

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.