2009-06-01 9 views
0

Ich bin nicht völlig neu in PHP oder XML, aber ich bin 100% neu, um XML mit PHP zu verbinden. Ich habe eine XML-Zeichenfolge, die mehrere Knoten hat, aber die einzigen, in denen ich interessiert bin, sind die < Schlüsselwort> Knoten, die es gibt eine unsichere Anzahl von jeder enthält eine Phrase wie folgt: < Schlüsselwort> Blue Diamond Schmuck </Keyword> zum Beispiel sagen die Zeichenfolge sah wie folgt aus:PHP: Holen Sie sich ein Array von Text aus dem vordefinierten XML-Node-Typ?

<xml> 
<pointless_node/> 
<seq> 
<keyword>diamond ring</keyword> 
<keyword>ruby necklace</keyword> 
<keyword>mens watch</keyword> 
</seq> 
<some_node/> 
</xml> 

ich würde ein Array wie folgt wollen:

['diamond ring','ruby necklace','mens watch'] 

ich habe versucht, auf der PHP-Handbuch suchen und bekommen nur verwirrt und nicht sicher, was zu tun ist. Kann mir bitte jemand erklären, wie man das macht? Ich benutze PHP4.

DANKE!

Antwort

1

This turns $keywords into an array of Objects. Is there a way to get the text from the objects?

Sicher, dies zu sehen.

$dom = domxml_open_mem($str); 
$keywords = $dom->get_elements_by_tagname('keyword'); 

foreach($keywords as $keyword) { 
    $text = $keyword->get_content(); 
    // Whatever 
} 
+0

Ich schätze es sehr, dass Sie sich die Zeit genommen haben, meine Fragen zu beantworten, leider im Code, den Sie gepostet haben. $ Text == 'Objekt' nicht der Text in den Tags. –

+0

Mein Fehler, verwenden Sie $ text = $ keyword-> get_content(); –

+0

Ja das hat funktioniert! Vielen Dank! –

0

sehen: http://www.php.net/simplexml-element-xpath Versuchen Sie, die folgenden XPath und Array-Konstruktion

$string = "<xml> 
<pointless_node/> 
<seq> 
<keyword>diamond ring</keyword> 
<keyword>ruby necklace</keyword> 
<keyword>mens watch</keyword> 
</seq> 
<some_node/> 
</xml>"; 

$xml = domxml_open_mem($xmlstr) 

$xpath = $xml->xpath_new_context(); 
$result = xpath_eval($xpath,'//keyword'); 

foreach ($result->nodeset as $node) 
{ 
    $result[] = $node->dump_node($node); 
} 

edit: Code geändert PHP 4 Anforderungen bearbeiten zu reflektieren: modifiziert, um für schlecht dokumentierte Verhalten von xpath_new_context (php docs Kommentare weisen darauf hin, die Fehler)

+1

Ist Simplex nicht nur für PHP-Versionen> 5? – Silfverstrom

+0

Ich würde sogar '// Schlüsselwort/text()' xpath –

+0

ah ... * Docs * ganz richtig verwenden .... zurück zum Zeichenbrett. –

0

ich denke, die einfachste ist:

$dom = domxml_open_mem($str); 
$keywords = $dom->get_elements_by_tagname('keyword'); 
+0

Dies verwandelt $ keywords in ein Array von Objekten. Gibt es eine Möglichkeit, den Text von den Objekten zu erhalten? –

Verwandte Themen