将新的 XML 数据插入 XML 的特定位置

Insert new XML data into specific locations of an XML

我需要帮助将新的 XML 数据插入现有的 XML 结构

所以如果我有这个结构例如:

<subject subject="0">
   <datasetOne data="unique1">
      <testData>fdfhgj</testData>
   </datasetOne>
</subject>
<subject subject="2">
   <datasetOne data="unique2"></datasetOne>
   <datasetTwo data="unique3"></datasetTwo>
</subject>

如何插入:

<testData>Need to add this</testData>

inside dataSetTwo "unique3" for subject 2 这样 xml 输出将是

<subject subject="0">
   <datasetOne data="unique2">
      <testData>fdfhgj</testData>
   </datasetOne>
</subject>
<subject subject="2">
   <datasetOne data="unique2"></datasetOne>
   <datasetTwo data="unique3">
      <testData>Need to add this</testData>
   </datasetTwo>
</subject>

试试这样的:

$data = '
    <doc>
        <subject subject="0">
           <datasetOne data="unique1">
              <testData>fdfhgj</testData>
           </datasetOne>
        </subject>
        <subject subject="2">
           <datasetOne data="unique2"></datasetOne>
           <datasetTwo data="unique3"></datasetTwo>
        </subject>
    </doc>
';

$doc = new DOMDocument();
$doc->loadXML($data);
$xpath = new DOMXpath($doc);
$destination = $xpath->query('//datasetTwo[@data="unique3"]');
$template = $doc->createDocumentFragment();
$template->appendXML('<testData>Need to add this</testData>');
$destination[0]->appendChild($template);
echo $doc->saveXml();

输出是您的预期输出。