0

私は、メール キャリア サービス用に SOAP XML 形式のデータのみを返す Web サービスを使用しています (そして嫌いです) (JSONP が返されないのはなぜですか? お願いします!)

問題は、jQuery でデータを「消費」するので、情報を JSON に変換し、PHP をプロキシとして使用することです。これは、XML をクロスドメインでロードできず、YQL に依存したくないためです。

XML を JSON に変換するスクリプトは多数ありますが、Web サービスから返された xml は、このスクリプト内で実行する前に多くのクリーンアップを行う必要があります。そうしないと、多数のエラーがスローされます。

返されたxmlの最初の部分はスキーマまたはデータセットであるため、そこにはデータがなく、JSONからスキーマが必要なので、phpで削除しますstrstr(first data ocurrence)

しかし、私はこれを持っています...

    <Table diffgr:id="Table1" msdata:rowOrder="0">
      <Numero>301</Numero>
      <Torre xml:space="preserve"></Torre>
      <Piso xml:space="preserve"></Piso>
      <Depto xml:space="preserve"></Depto>
      <Localidad>SAN ISIDRO</Localidad>
      <eMail/>
      <Provincia>Buenos Aires</Provincia>
    </Table>
    <Table diffgr:id="Table2" msdata:rowOrder="1">
      <Numero>34</Numero>
      <Torre xml:space="preserve"></Torre>
      <Piso xml:space="preserve"></Piso>
      <Depto xml:space="preserve"></Depto>
      <Localidad>DON TORCUATO</Localidad>
      <eMail/>
      <Provincia>Buenos Aires</Provincia>
  </Table>

diffgr:id="Table2"これをきれいに JSON に変換できるように、すべてのタグ属性を削除する必要があります。私はいくつかの置換を行いましstr_replace(xml:space="preserve", "")たが、私はまだ可変コンテンツを持つ属性を持っていますmsdata:rowOrder="0"

この最後のことを行う最善の方法だと思いますが、これpreg_replaceには2つの問題があります。

  • 私は正規表現が苦手で、見つかった正規表現ジェネレーターはすべて、文字列を「残して」削除せずに残します
  • 「id」と「row」の正しい正規表現を取得するまで試してみても、数回の置換を行ってから2つの正規表現を行うのは非常に非効率的であると感じます。2 つのアイテムしか貼り付けていませんが、応答が数百になる可能性があり、Web サービスへの CURL にはすでに多くの時間がかかっており、プロキシは多くのヒットを取得します。これを可能な限り最適化する必要があります。

<Table diffgr:id="Table**N**" msdata:rowOrder="**N**">'' の後のすべてを削除する、またはそれ以上に変換するより良い方法はあり <Table>ますか? または、生の SOAP XML を 1 つの魔法のステップだけで JSON に変換するより良い方法はありますか?

4

0 に答える 0