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