将新的 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();
输出是您的预期输出。
我需要帮助将新的 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();
输出是您的预期输出。