2011-08-08 7 views
2

特定のノードセットのnodeValueを取得するのに問題があります。 XMLは次のようになります。ノードのようなXMLを見つけるPHP DOM DOM

<root> 
<SpecialParameter>Some Text</SpecialParameter> 
<SpecialInfo someNumber="123456789"></SpecialInfo> 
<book> 
    <title>Rusty Bedsprings</title> 
    <author>I. P. Knightly</author> 
</book> 
<book> 
    <title>Rush To The Out House</title> 
    <author>Willie Makeit</author> 
</book> 
</root> 
私が取得する必要がどのような

が< SpecialParameterある>と< SpecialInfoで数>ので、私が持っていることはこれです:

$sp = $doc->getElementsByTagName("SpecialParameter"); 
$directive = $sp->item(0)->nodeValue; 
$si = $doc->getElementsByTagName("SpecialInfo"); 
$id = $si->item(0)->nodeValue; 

どちらのリターンオブジェクトが、オブジェクト最初の2つのノードにアクセスする秘密は何ですか?または、その問題については、本のタグの中に何らかのテキストがある場合、どのようにisbnを引き出すのでしょうか?

ありがとうございます!

答えて

3

あなたのXMLがひどく形成されている - あなたは<author>で始まるが、</title>で終わるされています。固定されている場合、$directiveは期待値です。 $idについては

、あなたは$id = $si->item(0)->getAttribute('someNumber')をしたいです。

0

上記の@FedericoLebrónによって残されたコメントに加えて、DOMDocumentにはrecoverというプロパティがあります。これはあなたがXMLを作成していない場合に使用できます。フェデリコが指摘したように、XMLが有効ではありません、あなたは値を取得していない理由ですが、あなたはtruerecoverを設定した場合、必要になります。

例:もちろん

$doc = new DOMDocument; 
$doc->recover = true; 
$doc->load('path/to/file.xml'); 

、最善の解決策は、XMLを修正することです。

+0

フランソワとフェデリコ、回答に感謝しますが、私の例は明確ではありませんでしたし、いくつかのタイプミスが含まれていました。私が必要とするのは、SpecialParametersとSpecialInfo ...ブックタグの中のものです。私は完全に上手くいくことができます。 – ppetree

関連する問題