-1

Zend Frameworkでアプリケーションを構築していますが、他のサーバーからの応答を取得するための要求ファイルとしてxmlを使用できるように、xmlファイルを操作してその内容をいくつか変更する必要があります。グーグルした後、simplexmlが他の人よりも人気があるのを見てきましたが、ZendFrameworkにどの実装が適しているかわかりません。どんな提案も非常に役に立ちます。私のリクエストXMLファイルは次のようなものです。

<?xml version="1.0" encoding="UTF-8"?>
    <aa>
        <bb>
            <cc>
                <dd>
                    <ee/>
                </dd>
                <ff>
                    <Identification _FirstName="******" _LastName="*****" _Num="********">
                        <gg/>
                    </Identification>
                </ff>
            </cc>
        </bb>
    </aa>

ここで、_FirstName、_LastName、およびNumの値を変更できるようにする必要があります。これには、Zend FrameworkでどのXML操作方法を使用する必要がありますか?

前もって感謝します。

4

2 に答える 2

1

Zend Frameworkは、PHPのネイティブDOM拡張機能(リンケージマイン)に基づいて構築されたZend_DOMライブラリを提供します。

Zend_DomDOMドキュメントと構造を操作するためのツールを提供します。現在、XPathセレクターとCSSセレクターZend_Dom_Queryの両方を利用してDOMドキュメントをクエリするための統一されたインターフェイスを提供するを提供しています。

セレクターが必要ない場合は、は必要ありませんがZend_DOM、任意のネイティブXML拡張機能を使用できます。

使用方法Zend_DOMはリファレンスガイドで説明されています:

を使用するZend_Dom_Queryには、オブジェクトをインスタンス化しZend_Dom_Query、オプションでドキュメントをクエリに渡します(文字列)。ドキュメントを作成したら、query()またはqueryXpath()メソッドのいずれかを使用できます。各メソッドはZend_Dom_Query_Result、一致するノードを持つオブジェクトを返します。

つまり、一言で言えば:

$dom = new Zend_Dom_Query($xmlString);
$results = $dom->query('Identification');
$identification = $results->current();

$ Identificationには、DOMElement他のと同じように変更できるが含まれますDOMElementXMLファイルの値を変更する方法に関するStackOverflowの例はたくさんあるので、ここでは繰り返しません。

を変更した後、変更されたドキュメントをXMLにシリアル化するDOMElementためにを取得する必要があります。DOMDocumentそうするために、あなたは使用することができます

$doc = $identification->ownerDocument;
$doc->save('filename.xml'); // to save it to a file
$xmlString = $doc->saveXML(); // to save it to a variable

X(HT)MLパーサーの概要については、を参照してください。

于 2012-06-14T06:17:54.120 に答える
0

次の構造を使用することをお勧めします。

<Identification>
     <FirstName>*****</FirstName>
     <LastName>*****</LastName>
     <Num>*****</Num>
   </Identification>

そして、Zend_Config_Xmlクラスを使用します:http://framework.zend.com/manual/en/zend.config.adapters.xml.html

于 2012-06-14T06:10:25.010 に答える