1

XML ファイルを操作するための php アプリケーションを作成しています。Perl XMLシリアライザー/アンシリアライザーを試して、操作のためにXML->php obj->jsonを変換してから、jsonをxmlに変換して印刷しました。

元の XML のサンプルを次に示します。

<module name="AssignId" active="true"  description="user description">
  <dict name="params">
    <entry key="Adds">
     ...
    </entry>
  </dict>
</module>

JSON に変換すると、次のようになります。

{"name":"AssignId","active":"true","description":"add draggable class to figure","dict":{"name":"params","entry":[{"key":"Adds" ...
}}

最終結果の XML は次のようになります。

<name>AssignId</name>
    <active>true</active>
    <description>add draggable class to figure</description>
    <dict>
        <name>params</name>
        <entry>
            <XML_Serializer_Tag>
                <key>Adds</key>
                  ...
            </XML_Serializer_Tag>
        </entry>
    </dict>
</name>

ここに私の2つのクラスがあります

class JSON_toXML {

    var     $jsonObj,
            $phpObj,
            $serializer;

    public function __construct($options, $file_path) {
        $this->serializer = new XML_Serializer($options);
        $serializedDoc = $this->serializer->serialize(json_decode($file_path));
        if ($serializedDoc === true) {
            $this->jsonObj = $this->serializer->getSerializedData();
        } else {
            $this->jsonObj = NULL;
        }
    }
    public function print_obj() {
        echo "<pre>";
        echo($this->jsonObj);
        echo "</pre>";
    }
}


class XML_toJSON {

        var     $phpObj,
                $jsonObj,
                $unserializer;

        public function __construct($options, $file_path) {

            $this->unserializer = &new XML_Unserializer($options);
            $unserializedDoc = $this->unserializer->unserialize($file_path, true);
            $this->phpObj = $this->unserializer->getUnserializedData();
            $this->jsonObj = json_encode($this->phpObj);
        }

        public function print_phpObj() {
            echo "<pre>";
            print_r($this->phpObj);
            echo "</pre>";
        }

        public function get_phpObj() {
            return $this->phpObj;
        }

        public function print_jsonObj() {
            echo $this->jsonObj;
        }

        public function get_jsonObj() {
            return $this->jsonObj;
        }

    }

最終結果の XML をオリジナルと同じ形式に保つにはどうすればよいでしょうか? 多分それを行うためのより良い方法がありますか?ありがとうございました!!!

4

1 に答える 1

2

属性と要素を区別できる必要がありますが、フォーマットはその情報を伝達しません。フォーマットを次のようなものに変更することから始める必要があります。

{
   "element": "module",
   "attribs": {
      "name":        "AssignId",
      "active":      "true",
      "description": "add draggable class to figure"
   },
   "children": [
      {
         "element": "dict",
         "attribs": {
            "name": "params"
         },
         "children:" [
            ...
         ]
      }
   ]
}
于 2012-08-30T22:14:37.737 に答える