リモートサーバーからXMLファイルをプルし、simplexml_load_stringとjson_encodeを使用してJSONに変換するPHPスクリプトがあります。ただし、simplexml_load_stringは、次のようにインライン属性を無視しているようです。
<AxisFeedrate dataItemId="iid7" timestamp="2012-03-21T15:15:41-04:00" sequence="7" name="Yfrt" subType="ACTUAL" units="MILLIMETER/SECOND">UNAVAILABLE</AxisFeedrate>
この場合、JSON表現は{AxisFeedrate:'UNAVAILABLE'}になります。
ただし、これらの属性を使用できるようにする必要があります。私が取り組んできたアイデアの1つは、文字列を置き換えて、属性を次のようにテキストノードに変換することです。
<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>
通常の検索/置換で属性を独自のタグ要素に変換できますが、少なくとも検索/置換では、元のテキスト値を値タグでラップするのに問題があります。
これを行うためのいくつかの良いアプローチは何ですか?上記のXMLのチャンクは、さまざまなデータ項目の多くの同様のチャンクの真ん中にあるため、最初の終了>を>...に置き換えることから始めることはできませんでした。