2010-12-12 11 views
0

最近、PHPでsimpleXMLで出力をフォーマットする方法を学びました。あなただけの行を追加する$xml->formatOutPut = true;私はそれを行ったとき、私が書いたjavascriptは、XMLを解析することはできません。私はformatOutPut行をオプトアウトするので、XMLは1行に書式なしで書かれています。私がフォーマットラインをオプトアウトすると、javascriptはXMLを解析できます。本当にwierd。 PHPでフォーマットラインをオプトアウトしない方法はありますか?

答えて

0

どのようにXMLをjavascriptで解析しますか?
問題がフォーマットされた出力である場合は、textNodes(childNodesなど)も処理するメソッド/コレクションを使用すると思います。その場合、javascriptをそのように変更する必要がある場合、whiteSpacesだけを含むtextNodesをスキップします(たとえば、jQueryがこれを行うことができます)。

+0

"var xmlDoc = xmlhttp.responseXML;"でXMLを解析します。すべてのノードを取得するにはgetElementsByTagName()メソッドを使用します。だからあなたはwhiteSpacesがエラーを引き起こしていると言いますか?あなたはこの問題を解決するためにjavascriptsのいくつかのメソッドを与えることができますか?私はJQueryを使用したくありません – einstein

+0

getElementsByTagNameはwithespacesに問題がありません。要素ノードのみを処理します。問題を特定するためにjavascript-parserを表示できますか? –

+0

xmlhttp = new XMLHttpRequest(); \t xmlhttp.open( "GET"、 "serverScripts/contacts/showContactList.php"、false); \t xmlhttp.send(); \t \t var xmlDoc = xmlhttp.responseXML; \t var root = xmlDoc.getElementsByTagName( 'contacts'); 次に、このjavascriptコードを使用してXMl nodeValueを取得します。失敗した最初の行は です。 。 。 var profileId = root [0] .childNodes [i] .getAttribute( 'profileId'); \t \t var profileMiniature = root [0] .childNodes [i] .getAttribute( 'profileMiniature'); – einstein