Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New to the CF scene
    Join Date
    Jun 2009
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    XML and PHP replaceChild problem

    Hi I am testing a script where I can change an XML files nodes value with PHP, It seems to work except for one issue the text within the node is changed but when I save it back to the file the nodes have dissappered and only the text is present, any ideas where I am going wrong here?

    The XML:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <root>
    <home>
    <heading>A header</heading>
    <content>The content</content>
    <image>img/animage.jpg</image>
    </home>
    </root>

    The code

    <?php
    // Load the XML
    $dom = new DomDocument;

    $dom->Load('xml01.xml');
    // Locate the old parent node
    $xpath = new DOMXpath($dom);
    $nodelist = $xpath->query('/root/home/content');
    $oldnode = $nodelist->item(0);
    ?>


    <?php
    // Load the new text string
    $modtxt = $_POST['my_text'];
    $text = $dom->createTextNode($modtxt);


    // Replace
    $oldnode->parentNode->replaceChild($text, $oldnode);

    // Display
    echo $dom->saveXML();

    // Now save it to the file,, hmmmm this has a problem the node is changed but it saves new data without the node

    print $dom->save("xml01.xml");

    ?>

    New saved XML
    <?xml version="1.0" encoding="iso-8859-1"?>
    <root>
    <home>
    <heading>A header</heading>
    New Text String
    <image>img/animage.jpg</image>
    </home>
    </root>

    Any help would be highly appriciated

    Rob

  • #2
    Moderator
    Join Date
    May 2002
    Location
    Hayward, CA
    Posts
    1,453
    Thanks
    1
    Thanked 21 Times in 19 Posts
    I think this is an XPath problem. Your XPath,
    Code:
    /root/home/content
    , is selecting the content element, and not its first child node (the text).

    Take a look in our XML Documentation and References thread (stickied at the top of this forum) for the XPath specification - you will probably find the right XPath step to append there. (I think it's
    Code:
    /text()
    .)
    "The first step to confirming there is a bug in someone else's work is confirming there are no bugs in your own."
    June 30, 2001
    author, Verbosio prototype XML Editor
    author, JavaScript Developer's Dictionary
    https://alexvincent.us/blog

  • #3
    New to the CF scene
    Join Date
    Jun 2009
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Thats it thank you


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •