gpt4 book ai didi

php - 使用php替换xml中的特定节点值

转载 作者:可可西里 更新时间:2023-11-01 14:03:04 25 4
gpt4 key购买 nike

您好,我正在解析多个 xml 提要并将其合并为一个,它对我来说工作正常,但现在我有点卡住了,因为我需要在特定节点值中添加一些前缀,我的意思是我需要更改值那个节点。在这里,我提供了一些我真正想要的示例代码。

XML

<JobRecords>
<JobRecord>
<Brand>Corporate1</Brand>
<JobId>45982</JobId>
<WorkTypes>
<WorkTypeRecord>
<Title>Permanent1</Title>
</WorkTypeRecord>
</WorkTypes>
</JobRecord>
<JobRecord>
<Brand>Corporate2</Brand>
<JobId>45983</JobId>
<WorkTypes>
<WorkTypeRecord>
<Title>Permanent2</Title>
</WorkTypeRecord>
</WorkTypes>
</JobRecord>
<JobRecord>
<Brand>Corporate3</Brand>
<JobId>45984</JobId>
<WorkTypes>
<WorkTypeRecord>
<Title>Permanent3</Title>
</WorkTypeRecord>
</WorkTypes>
</JobRecord>
</JobRecords>

在上面的 xml 中,我想附加这样的前缀 <JobId>0-45984</JobId>

这是 php 代码,它将不同的 xml 提要组合成一个输出,如上所示。

<?php 
$feed1 = "data1.xml";
$feed2 = "data2.xml";
$feed3 = "data3.xml";

$xml1 = new DOMDocument('1.0', 'UTF-8');
$xml1->load($feed1);

$xml2 = new DOMDocument('1.0', 'UTF-8');
$xml2->load($feed2);

$xml3 = new DOMDocument('1.0', 'UTF-8');
$xml3->load($feed3);

$addXml = array();
$addXml[] = $xml1->saveXML();
$addXml[] = $xml2->saveXML();
$addXml[] = $xml3->saveXML();

// create a new document
$dom = new DOMDocument();
$dom->appendChild($dom->createElement('JobRecords'));

foreach ($addXml as $xml) {
$addDom = new DOMDocument();
$addDom->loadXml($xml);
if ($addDom->documentElement) {
foreach ($addDom->documentElement->childNodes as $node) {
$dom->documentElement->appendChild(
$dom->importNode($node, TRUE)
);
}
}
}

$xmlFinal = $dom->saveXml();
echo $xmlFinal;
?>

到目前为止我已经尝试过但没有成功请告诉我如何实现这一目标。
提前致谢,非常感谢。

最佳答案

您可以从根开始迭代并检查并替换节点,如下所示。这里 $xmlData 保存了你的 xml 字符串。

$dom = new DOMDocument();
$dom->loadXML($xmlData);
foreach ($dom->documentElement->childNodes as $node) {
//print_r($node);
if($node->nodeType==1){
$OldJobId = $node->getElementsByTagName('JobId')->Item(0);
$newelement = $dom->createElement('JobId','0-'.$OldJobId->nodeValue);
$OldJobId->parentNode->replaceChild($newelement, $OldJobId);
}
}
$str = $dom->saveXML($dom->documentElement);
echo $str;

您可以找到工作演示 here

关于php - 使用php替换xml中的特定节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20540592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com