保存前将节点添加到XML

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保存前将节点添加到XML相关的知识,希望对你有一定的参考价值。

如何在保存之前将xml节点<TypeId>HDU5K3KDI23F</TypeId>添加到XML变量的“Top”节点。 我得到的XML数据来自API作为响应。 当我使用下面的代码时,xml响应数据会被保存,但'Typeid'节点没有保存在该文件中。

XML Response Data looks like this

        <GetCategories>
           <GetProduct>
               <Data>
                  <Id>87772873</Id>
                  <Name>Foods and Beverages</Name>
                  <Top>
                  <CategoryId>028392323</CategoryId>
                  <CategoryName>Categories</CategoryName> 
                  </Top>
               </Data>
           </GetProduct>
       </GetCategories>

Code

        $dom = new DOMDocument;
        $dom->loadXML($response->toXML());  
        $dom->preserveWhiteSpace = FALSE;

        $Xpath = new DOMXpath($dom);

        foreach ($Xpath->evaluate('/GetCategories/GetProduct/Data/Top[1]') as $data) 
         {
            $type = $data->appendChild($dom->createElement('TypeId'));
            $type->appendChild($dom->createTextNode('HDU5K3KDI23F'));
         }

           $dom->formatOutput = TRUE;
           $xmldata = $dom->saveXML();
           echo $xmldata;

        $myfile = file_put_contents('data.xml', $xmldata.php_EOL , FILE_APPEND | LOCK_EX);
答案

更改foreach中的代码,如下所示:首先使用value创建元素并附加到数据中。

foreach ($Xpath->evaluate('/GetCategories/GetProduct/Data/Top[1]') as $data) 
{
    $type = $dom->createElement('TypeId', 'HDU5K3KDI23F');
    $data->appendChild($type);
}

以上是关于保存前将节点添加到XML的主要内容,如果未能解决你的问题,请参考以下文章

将节点添加到XML变量并保存

LINQ to XML - 更新节点并将其保存到 XML 文件

tomcat中实现特定路径下的图片的url访问

在 Groovy 中将字符串 XML 片段转换为文档节点

将字符串 XML 片段转换为 Java 中的文档节点

检索数据未出现在 ListView 的片段中