skip to Main Content

In the example below, the PHP form updates the XML with the text entered in the fields.

XML file labela.xml:

<?xml version="1.0" encoding="UTF-8"?>
<inventors>
   <person>
      <name>change1</name>
      <comment>change2</comment>
   </person>
</inventors>

The PHP form used to change the "change1" and "change2" in the XML file

<script src="https://code.jquery.com/jquery-latest.min.js"></script>
 <?php
 $xml = new DOMDocument("1.0", "utf-8");
 $xml->formatOutput = true;
 $xml->preserveWhiteSpace = false;
 $xml->load("labela.xml");

 //Get item Element
 $element = $xml->getElementsByTagName("person")->item(0);

 //Load child elements
 $name = $element->getElementsByTagName("name")->item(0);
 $comment = $element->getElementsByTagName("comment")->item(0);

 //Replace old elements with new
 $element->replaceChild($name, $name);
 $element->replaceChild($comment, $comment);
 ?>

<?php if (isset($_POST["submit"])) {
    $name->nodeValue = $_POST["namanya"];
    $comment->nodeValue = $_POST["commentnya"];
    htmlentities($xml->save("labela.xml"));
} ?>

<form method="POST" action=''>
name <input type="text-name" value="<?php echo $name->nodeValue; ?>" name="namanya" />
comment  <input type="text-comment" value="<?php echo $comment->nodeValue; ?>"  name="commentnya"/>
<input name="submit" type="submit" />
</form>

How do I extract and update the strings change1 and change2 from the XML structure below, using PHP?

<?xml version="1.0" encoding="UTF-8"?>
<pt:document xmlns:pt="http://schemas.brother.info/ptouch/2007/lbx/main" xmlns:barcode="http://schemas.brother.info/ptouch/2007/lbx/barcode" xmlns:style="http://schemas.brother.info/ptouch/2007/lbx/style" xmlns:text="http://schemas.brother.info/ptouch/2007/lbx/text">
   <pt:body currentSheet="Folha 1">
      <style:sheet name="Folha 1">
         <pt:objects>
            <barcode:barcode>
               <barcode:qrcodeStyle model="2" eccLevel="15%" />
               <pt:data>change1</pt:data>
            </barcode:barcode>
            <text:text>
               <text:textStyle vertical="false" />
               <pt:data>change2</pt:data>
               <text:stringItem charLen="7">
                  <text:ptFontInfo>
                     <text:logFont name="Arial" />
                  </text:ptFontInfo>
               </text:stringItem>
            </text:text>
            <text:text>
               <text:textStyle vertical="false" />
               <pt:data>change3</pt:data>
            </text:text>
         </pt:objects>
      </style:sheet>
   </pt:body>
</pt:document>

thanks in advance to everyone who takes their time to help

2

Answers


  1. I think it’s needed translate xml structure into object

    $xmlObject = new SimpleXMLElement($xmlString);

    And then you can get access to property.

    Login or Signup to reply.
  2. The ideal is to extract data from your XML using XPath.
    You will get what you want by proceeding as follows:

    load.php

    <?php
    $change1 = $_POST['change1'];
    $change2 = $_POST['change2'];
    $change3 = $_POST['change3'];   
    $xml = simplexml_load_file('your_complex_xml.xml');
    $xml->xpath('//pt:data')[0][0] = $change1;
    $xml->xpath('//pt:data')[1][0] = $change2;
    $xml->xpath('//pt:data')[2][0] = $change3;
    $xml->asXML('new_complex_xml.xml');
    

    form.php

        <form method="post" action="load.php">
        <label for="change1">change1:</label>
        <input type="text" name="change1" id="change1"><br>
        <label for="change2">change2:</label>
        <input type="text" name="change2" id="change2"><br>
        <label for="change3">change3:</label>
        <input type="text" name="change3" id="change3"><br>
        <input type="submit" value="Generate New XML">
        </form>

    If you still can’t, tell me which part you’re having trouble with.
    I wish you success in your projects.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search