Gibt es eine Funktion, die Strings aus PHP erstellt SimpleXMLElement
?
SimpleXml in Zeichenfolge
lysd
Tim Cooper
Du kannst den … benutzen SimpleXMLElement::asXML()
Methode, um dies zu erreichen:
$string = "<element><child>Hello World</child></element>";
$xml = new SimpleXMLElement($string);
// The entire XML tree as a string:
// "<element><child>Hello World</child></element>"
$xml->asXML();
// Just the child node as a string:
// "<child>Hello World</child>"
$xml->child->asXML();
-
$string = $xml->child->__toString();
– Lukas Snowden
27. Januar 2015 um 22:17 Uhr
-
htmlspecialchars( $xml->asXML() ) ?
– zloctb
24. Oktober 2015 um 5:19 Uhr
-
aber Sie haben die Tags übrig, was ist, wenn Sie die Tags nicht wollen? andere Antworten lösen dieses Problem
– Andreas
26. Januar 2016 um 20:46 Uhr
-
Verwenden Sie nicht die Methode von @LukeSnowden, da diese nicht direkt aufgerufen werden soll. Die eigentlich richtige Antwort ist die Antwort von Nicolay77, die Casting verwendet.
– Benutzer2924019
15. Februar um 16:45 Uhr
Sie können Casting verwenden:
<?php
$string = "<element><child>Hello World</child></element>";
$xml = new SimpleXMLElement($string);
$text = (string)$xml->child;
$text wird ‘Hello World’ sein
-
Funktioniert für mich, weil es die Tags nicht einfügt, danke
– Andreas
26. Januar 2016 um 20:47 Uhr
Du kannst den … benutzen asXML
Methode als:
<?php
// string to SimpleXMLElement
$xml = new SimpleXMLElement($string);
// make any changes.
....
// convert the SimpleXMLElement back to string.
$newString = $xml->asXML();
?>
Tatsächlich konvertiert asXML() die Zeichenfolge in XML, wie der Name sagt:
<id>5</id>
Dies wird normalerweise auf einer Webseite angezeigt, verursacht jedoch Probleme, wenn Sie Werte mit etwas anderem abgleichen.
Sie können die Funktion strip_tags verwenden, um den tatsächlichen Wert des Felds zu erhalten, wie:
$newString = strip_tags($xml->asXML());
PS: Wenn Sie mit Ganzzahlen oder Gleitkommazahlen arbeiten, müssen Sie diese mit in Ganzzahlen umwandeln Intervall() oder floatval().
$newNumber = intval(strip_tags($xml->asXML()));
Leander
Sie können verwenden ->child
um ein untergeordnetes Element mit dem Namen zu erhalten Kind.
Dieses Element enthält den Text der Kind Element.
Aber wenn du es versuchst var_dump()
Bei dieser Variablen werden Sie sehen, dass es sich nicht wirklich um einen PHP-String handelt.
Der einfachste Weg, dies zu umgehen, besteht darin, a auszuführen strval(xml->child);
Dadurch wird es in einen tatsächlichen PHP-String konvertiert.
Dies ist beim Debuggen nützlich, wenn Sie Ihre XML-Schleife durchlaufen und verwenden var_dump()
um das Ergebnis zu überprüfen.
So $s = strval($xml->child);
.
Hier ist eine Funktion, die ich geschrieben habe, um dieses Problem zu lösen (vorausgesetzt, das Tag hat keine Attribute). Diese Funktion behält die HTML-Formatierung im Knoten bei:
function getAsXMLContent($xmlElement)
{
$content=$xmlElement->asXML();
$end=strpos($content,'>');
if ($end!==false)
{
$tag=substr($content, 1, $end-1);
return str_replace(array('<'.$tag.'>', '</'.$tag.'>'), '', $content);
}
else
return '';
}
$string = "<element><child>Hello World</child></element>";
$xml = new SimpleXMLElement($string);
echo getAsXMLContent($xml->child); // prints Hello World
Luca Reghellin
Manchmal können Sie einfach typisieren:
// this is the value of my $xml
object(SimpleXMLElement)#10227 (1) {
[0]=>
string(2) "en"
}
$s = (string) $xml; // returns "en";
-
Dies ist die Art von Objekt, das Sie für das Beschreibungsfeld eines RSS-Feeds erhalten. Es ist nicht intuitiv, dass es funktioniert, aber es war die einzige Lösung hier, die mir die Zeichenfolge im Inneren gab
$xmlitem->description
. Vielen Dank.– Henrik Erlandsson
8. August 2019 um 9:12 Uhr
Was für eine Saite willst du?
– Shamim Hafiz – MSFT
11. September 2010 um 12:18 Uhr