2014-09-24 2 views
0

XML 문서를 업데이트하려고합니다. 먼저 XML이 포함 된 문자열로 시작합니다.PHP - XML ​​속성 업데이트

나는 SimpleXMLElement 객체에 해당 문자열을로드 해요 :

$node= $xmlDoc->xpath("//nodename[@node_attribute='{$search_attribute_value}']");

지금 내가 좋아하는 것까지 : $xmlDoc = simplexml_load_string($my_xml_string);

나는 내가 지금처럼 업데이 트하려는 노드를 찾을 수 node_attribute 특성을 업데이트하십시오. 나는 $node['node_attribute']=$new_attribute_value을 시도하지만 $node은 자신의 개체이며 $xmlDoc 개체를 업데이트하지 않습니다.

$xmlDoc에서 속성 값을 찾고 업데이트하려면 어떻게해야합니까?

답변

2

$node 실제로 노드 배열이 있습니다.

$node[0]['node_attribute'] = $new_attribute_value; 

더 적절한있을 수 있습니다 : 당신이 알고 있다면 당신은 단지 하나의 당신이 할 수있는 업데이트 할 수있어

$nodes = $xmlDoc->xpath("//nodename[@node_attribute='{$search_attribute_value}']"); 
foreach ($nodes as $node) { 
    $node['node_attribute'] = $new_attribute_value; 
} 

그리고 모든 것이 예상대로 업데이트됩니다.

+0

그래, 해당 노드에 색인을 추가하는 것이 트릭입니다. '$ node [0] [ 'node_attribute'] = $ new_attribute_value;'전에 어떤 일이 일어 났는지 확신 할 수 없습니다. –

+1

@ dev.e.loper 노드가 텍스트 부분을 가지고 있다면'$ node [0] -> { '0'}'을 쓸 것입니다. [여기에] (https://eval.in/private/50fd041d061d09). –

0

테스트되지 않았지만 이렇게 시도해야합니다.

$nodename->attributes()->node_attribute = $new_attribute_value;