안녕하세요, 나는 여러 xml 피드를 구문 분석하고 하나로 결합하여 나를 위해 잘 작동하지만 지금은 특정 노드 값에 일부 접두사를 추가해야하기 때문에 한 지점에서 조금 붙어 있습니다. 그 노드의 값을 변경해야한다는 뜻입니다. 여기에 내가 원하는 실제 코드 몇 가지를 제공하고있다.PHP를 사용하여 XML에서 특정 노드 값을 대체
내가 여기에이 <JobId>0-45984</JobId>
같은 접두사를 추가하려면 위의 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 피드를 결합 PHP 코드입니다 .
<?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;
?>
지금까지 시도했지만 성공하지 못했습니다. 어떻게 달성 할 수 있는지 알려주세요.
미리 감사드립니다.
아무것도 작동하지 찾을 수 있습니다
당신이 당신의 대답에 다시 봐 주시기 바랍니다 수있는이 답을 발생합니다. –
안녕하세요, 위의 코드를 시도했지만 위의 코드 사람과 아무 일도 발생하지 않습니다. jobId의 값이 전혀 변경되지 않았습니다. –
잘 작동합니다. 나는 그것을 로컬에서 테스트했다. https://eval.in/78610 (xml 텍스트 사용으로 변경). – ThW