Jak konwertować atrybuty XML na węzły tekstowe
Mam skrypt PHP, który pobiera plik XML ze zdalnego serwera i konwertuje go na JSON przy użyciu simplexml_load_string i json_encode. Jednak simplexml_load_string wydaje się ignorować atrybuty wbudowane, takie jak:
<code><AxisFeedrate dataItemId="iid7" timestamp="2012-03-21T15:15:41-04:00" sequence="7" name="Yfrt" subType="ACTUAL" units="MILLIMETER/SECOND">UNAVAILABLE</AxisFeedrate> </code>
W tym przypadku reprezentacja JSON byłaby {{AxisFeedrate: 'UNAVAILABLE'}
Muszę jednak mieć te atrybuty. Jednym z pomysłów, z którym się zetknąłem, jest zastąpienie ciągów znaków, aby przekształcić atrybuty w węzły tekstowe w taki sposób:
<code><AxisFeedrate> <dataItemId>iid7</dataItemId> <timestamp>2012-03-21T15:15:41-04:00</timestamp> <sequence>7</sequence> <name>Yfrt</name> <subType>ACTUAL</subType> <units>MILLIMETER/SECOND"</units> <value>UNAVAILABLE</value> </AxisFeedrate> </code>
Mogę przekształcić atrybuty w ich własne elementy znacznika za pomocą zwykłego find / replace, ale mam problem z zawinięciem oryginalnej wartości tekstowej w znaczniku Value, przynajmniej przy użyciu find / replace.
Jakie są dobre podejścia do tego celu? Powyższy fragment XML znajduje się w środku wielu podobnych fragmentów różnych elementów danych, więc nie mogłem po prostu zacząć od zastąpienia pierwszego zamknięcia> przez> ...