SimpleXmlstring
有没有任何函数,使PHP从simpleXMLElementstring?
您可以使用SimpleXMLElement::asXML()
方法来完成此操作:
$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();
你可以使用cast:
<?php $string = "<element><child>Hello World</child></element>"; $xml = new SimpleXMLElement($string); $text = (string)$xml->child;
$文本将是'Hello World'
实际上,asXML()将string转换为xml,正如其名称所示:
<id>5</id>
这将正常显示在网页上,但是当您将值与其他值匹配时,会造成问题。
您可以使用strip_tags函数来获取字段的实际值:
$newString = strip_tags($xml->asXML());
PS:如果您使用整数或浮点数,则需要使用intval()或floatval()将其转换为整数。
$newNumber = intval(strip_tags($xml->asXML()));
您可以使用asXML
方法:
<?php // string to SimpleXMLElement $xml = new SimpleXMLElement($string); // make any changes. .... // convert the SimpleXMLElement back to string. $newString = $xml->asXML(); ?>
您可以使用->child
来获取一个名为child的子元素。
这个元素将包含子元素的文本。
但是,如果您尝试var_dump()
该variables,您将会看到它实际上不是一个PHPstring。
最简单的方法是执行strval(xml->child);
这将转换为一个实际的PHPstring。
这在debugging循环XML时使用var_dump()
来检查结果时非常有用。
所以$s = strval($xml->child);
。
这是我写的一个函数来解决这个问题(假设标签没有属性)。 这个函数将在节点中保持HTML格式:
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