如何编辑 XML DOMDocument 的特定节点值?

Posted

技术标签:

【中文标题】如何编辑 XML DOMDocument 的特定节点值?【英文标题】:How to edit specific node value for XML DOMDocument? 【发布时间】:2020-12-02 15:09:43 【问题描述】:

我有以下 xml 文件:

<products>
<info><productName>Chocolate Cake</productName> <productDescription>uieovbeveb</productDescription><quantity>1</quantity><stock>22</stock><price>2.99,12.99</price><size>200 ml</size><type>India,colombia</type></info>
<info><productName>watermelon</productName><productDescription>fr</productDescription><quantity>rf</quantity><stock>34</stock><price>4</price><size>4</size><type>5</type></info>
</products>

我想访问其中一种产品的 productDescription 标签并更改其值,但它不起作用。

这是我到目前为止所尝试的:

if (isset($_POST['editProduct'])) 


$xml = new DomDocument("1.0", "UTF-8");
$xml->load('./data/productDB.xml');

$productName = $_POST['productName'];
$productDescription = $_POST['productDescription'];
$quantity = $_POST['quantity'];
$stock = $_POST['stock'];
$price = $_POST['price'];
$size = $_POST['size'];
$type = $_POST['type'];
$sizetoString = implode(",", $size);
$typetoString = implode(",", $type);
$pricetoString = implode(",", $price);

$products = $xml->getElementsByTagName('info');


foreach($products as $product) 
    $nameOfProduct = $product->getElementsByTagName('productName')->item(0)->nodeValue;

    if($nameOfProduct == $productName) 
        $product->getElementsByTagName('productDescription')->item(0)->nodeValue="";
        $product->getElementByTagName('productDescription')->item(0)->appendChild($product->createTextNode($productDescription));

    


$xml->save("./data/productDB.xml");

【问题讨论】:

【参考方案1】:

试试这个例子:

// load the document
$products = simplexml_load_file('test.xml');

// loop through each product and change description
foreach($products as $product) 
    $product->productDescription = 'new description';


// save the new xml
$products->asXML('test.xml');

【讨论】:

以上是关于如何编辑 XML DOMDocument 的特定节点值?的主要内容,如果未能解决你的问题,请参考以下文章

如何清除 Flash XFL 格式的 DOMDocument 元素的 sharedLibraryURL 属性?

如何使用 DOMDocument 编写 XML 自闭标签

如何在 PHP 中将 XML 字符串转换为 DOMDocument?

如何使用 php 类 DOMDocument 将新的 xml 节点附加到现有的 .xml 文件?

DOMDocument 避免初始 xml 标记

如何使 DOMDocument 在 PHP 中编写独立 = 是?