ルート要素と子の両方の名前にコロンが含まれているため、PHP で simpleXML を使用して xml を解析する際に深刻な問題があります。私は多くのソリューションを検索し、機能するソリューションを見つけました。ただし、これらのコロン要素がネストされているため、私の問題はより具体的です。
ご覧のとおり、ルート要素の子要素は 1 から N まで変化します (元の xml のスニペット)。
<bpmndi:BPMNEdge bpmnElement="sid-96E075E5-D515-46E7-BED2-9A284F1F5153" id="sid-96E075E5-D515-46E7-BED2-9A284F1F5153_gui">
<omgdi:waypoint x="985.0" y="220.0"/>
<omgdi:waypoint x="1055.5" y="220.0"/>
<omgdi:waypoint x="1055.5" y="160.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-F36DC404-7095-4653-8176-FB99ADAB8DEC" id="sid-F36DC404-7095-4653-8176-FB99ADAB8DEC_gui">
<omgdi:waypoint x="927.0" y="580.0"/>
<omgdi:waypoint x="1005.0" y="580.0"/>
</bpmndi:BPMNEdge>
私が現在行ったこと(そして動作します。質問はコードのコメント部分にあります)
$xml->registerXPathNamespace('bpmndi', 'specific-url');
$xml->registerXPathNamespace('omgdi', 'specific-url');
$edges = $xml->xpath('//bpmndi:BPMNEdge');
$point = $xml->xpath('//omgdi:waypont');
$i = 0;
foreach ($edges as $edge) {
echo (string) $edge[0]['bpmnElement'];
//how to get the children of this element? E.g. 1 or N waypoints and their x and y?
$i++;
}