$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();
U mnie działa, ponieważ nie umieszcza tagów, dzięki
Andrew
16
Właściwie asXML () konwertuje ciąg znaków na xml zgodnie z jego nazwą:
<id>5</id>
Będzie to wyświetlane normalnie na stronie internetowej, ale spowoduje problemy podczas dopasowywania wartości z czymś innym.
Możesz użyć funkcji strip_tags, aby uzyskać rzeczywistą wartość pola, taką jak:
$newString = strip_tags($xml->asXML());
PS: jeśli pracujesz z liczbami całkowitymi lub liczbami zmiennoprzecinkowymi, musisz przekonwertować je na liczby całkowite za pomocą intval () lub floatval () .
<?php// string to SimpleXMLElement$xml = new SimpleXMLElement($string);
// make any changes.
....
// convert the SimpleXMLElement back to string.$newString = $xml->asXML();
?>
To jest rodzaj obiektu, który otrzymujesz w polu opisu źródła RSS. To sprzeczne z intuicją, ale to było jedyne rozwiązanie, które dało mi sznurek w środku $xmlitem->description. Dzięki.
Henrik Erlandsson
0
Prawdopodobnie w zależności od źródła XML, którego możesz / nie musisz używać __toString(); Musiałem użyć, w __toString()przeciwnym razie zwraca ciąg wewnątrz elementu SimpleXMLElement. Może potrzebuję dokładniej przeanalizować obiekt ...
Odpowiedzi:
Możesz użyć tej
SimpleXMLElement::asXML()
metody, aby to osiągnąć:$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();
źródło
$string = $xml->child->__toString();
Możesz użyć przesyłania:
<?php $string = "<element><child>Hello World</child></element>"; $xml = new SimpleXMLElement($string); $text = (string)$xml->child;
$ text zmieni się na „Hello World”
źródło
Właściwie asXML () konwertuje ciąg znaków na xml zgodnie z jego nazwą:
<id>5</id>
Będzie to wyświetlane normalnie na stronie internetowej, ale spowoduje problemy podczas dopasowywania wartości z czymś innym.
Możesz użyć funkcji strip_tags, aby uzyskać rzeczywistą wartość pola, taką jak:
$newString = strip_tags($xml->asXML());
PS: jeśli pracujesz z liczbami całkowitymi lub liczbami zmiennoprzecinkowymi, musisz przekonwertować je na liczby całkowite za pomocą intval () lub floatval () .
$newNumber = intval(strip_tags($xml->asXML()));
źródło
Możesz użyć tej
asXML
metody jako:<?php // string to SimpleXMLElement $xml = new SimpleXMLElement($string); // make any changes. .... // convert the SimpleXMLElement back to string. $newString = $xml->asXML(); ?>
źródło
Możesz użyć,
->child
aby pobrać element podrzędny o nazwie child .Ten element będzie zawierał tekst elementu podrzędnego .
Ale jeśli spróbujesz
var_dump()
tej zmiennej, zobaczysz, że w rzeczywistości nie jest to ciąg PHP.Najłatwiejszym sposobem obejścia tego jest wykonanie polecenia
strval(xml->child);
That przekonwertuje go na rzeczywisty ciąg PHP.Jest to przydatne podczas debugowania podczas zapętlania kodu XML i używania
var_dump()
do sprawdzania wyniku.A więc
$s = strval($xml->child);
.źródło
Oto funkcja, którą napisałem, aby rozwiązać ten problem (zakładając, że tag nie ma atrybutów). Ta funkcja zachowa formatowanie HTML w węźle:
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
źródło
Czasami możesz po prostu napisać:
// this is the value of my $xml object(SimpleXMLElement)#10227 (1) { [0]=> string(2) "en" } $s = (string) $xml; // returns "en";
źródło
$xmlitem->description
. Dzięki.Prawdopodobnie w zależności od źródła XML, którego możesz / nie musisz używać
__toString()
; Musiałem użyć, w__toString()
przeciwnym razie zwraca ciąg wewnątrz elementu SimpleXMLElement. Może potrzebuję dokładniej przeanalizować obiekt ...źródło