在下面的示例中,PHP表单使用在字段中输入的文本更新了XML.

XML文件Labela.xml:

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

用于更改XML文件中的"change1"和"change2"的PHP表单

<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>

如何使用PHP从下面的XML struct 中提取和更新字符串change1和change2?

<?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>

提前感谢每一位抽出时间来帮忙的人

推荐答案

理想的做法是使用XPath从您的XML中提取数据. 通过执行以下操作,您将获得您想要的:

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>

如果你还是不能,告诉我你对哪一部分有问题. 祝你在你的项目中取得成功.

Php相关问答推荐

419注册期间Laravel 11中的错误

为什么注册SIGHUP的处理程序函数会阻止在PHP CLI中等待输入时点击X关闭Xterm窗口?""

Laravel迁移返回SQL错误,但SQL有效且工作正常

在不超过PHP时间限制的情况下,在Laravel中高效地插入批量数据(25万条记录)?(队列、多租户)

如何使用`preg_replace`删除重复的空格字符

PHP中的圆生成器在国际日期变更线上失败

如何在PHP中出现弃用警告时触发错误?

WHERE方法不能与有效查询Laravel一起使用

PHP:使用FORT从数据库获取USERS表到AUTH表

如何使用PHP从TXM(XML)标记中读取特定属性

为WooCommerce中存储一些数据的购物车项目添加复选框

Regex|PHP捕获json字符串中的每个非法双引号

在 PHP MySQL 中自动生成账单编号

对产品/库存结果集进行分组和计数,形成多维分层数组

用自定义代码替换 WooCommerce 单一产品简短描述

WordPress 分页无法正常工作

如何在 Phpunit 的静态提供程序中创建测试双打?

symfony/notifier + twig/inky-extra 在 dunglas/symfony-docker 中缺少 ext-xsl.

构建 [Controller] 时目标 [Interface] 不可实例化

如何通过本地主机在同一台 PC 上同时运行 Microsoft IIS 和 WAMP