2011-09-15 16 views
1

私はいくつかのXMLテキストを解析するPHPページを持っています。そのテキストはhtmlテキストフィールドのユーザー入力から来ます。PHP DomDocument xmlパーサー

ノード間に空白があると、Domdocument xmlパーサーはドキュメントを正しく解析できません。基本的に、最初のノードは認識できませんが、ネストされたノードは認識できません。

空白を削除しても問題ありません。

$xmldoc = new DOMDocument(); 
$xmldoc->loadXML($rawxml); 

$top = $xmldoc->documentElement; 
if(!$top) {echo "error: xml config is empty"; exit(-1);} 
if($top->nodeName != "config") die("error: expect config tag as first element"); 


$nameNode = $top->childNodes->item(0); 

//Fails here 
if($nameNode->nodeName != "name") die("error: expect name tag following config tag"); 

作品

<config><name>sdf2</name></config> 

これは正常な動作です

<config> <name>sdf2</name></config> 
+0

を参照してください、 $ rawxml); – user623879

+0

@ user623879それは間違った方法です。 http://stackoverflow.com/questions/3577641/best-methods-to-parse-html-with-phpを読む –

答えて

0

を動作しません。 DOMを使用して書式設定されたXMLドキュメントを読み込んだときに、空白があります。インデント、改行、ノード値は、デフォルトでDOMTextインスタンスとしてDOMの一部になります。その後、任意のフォーマットの空白を破棄しますXMLをロードする前に

$xmldoc->preserveWhiteSpace = false; 

を行うことで、これを無効にすることができます。より詳細な回答のために私だdumb..coulda使用正規表現..... $ rawxml =にpreg_replace( "/> \ sの+<"