Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中将已由SimpleXMLElement和xpath转换的xml转换回字符串?_Php_Xml_Xpath - Fatal编程技术网

如何在php中将已由SimpleXMLElement和xpath转换的xml转换回字符串?

如何在php中将已由SimpleXMLElement和xpath转换的xml转换回字符串?,php,xml,xpath,Php,Xml,Xpath,我使用SimpleXMLElement和xpath将这个字符串转换成一个数组 <?xml version="1.0" encoding="UTF-8"?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <epos-print xmlns="http://www.epson-pos.com/schemas/2014/05/epos-print"

我使用SimpleXMLElement和xpath将这个字符串转换成一个数组

<?xml version="1.0" encoding="UTF-8"?>
 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
   <epos-print xmlns="http://www.epson-pos.com/schemas/2014/05/epos-print"><pulse/>
    <text align="center" ul="0" em="0" dw="1" dh="1" smooth="1" lang="de">Shoppingqueen</text>
    <feed/>
    <text align="center" ul="0" em="0" dw="0" dh="0" smooth="1" lang="de">Text me</text>
    <feed/>
    <text align="center" ul="0" em="0" dw="0" dh="0" smooth="1" lang="de">Hello People</text>
    <feed/>
    <text align="left" ul="0" em="0" dw="0" dh="0" smooth="0" lang="de">Hello world</text>
    <feed line="2"/>
    <text align="center" ul="0" em="0" dw="0" dh="0" smooth="0" lang="de">Some text</text>
    <feed line="2"/>
    <text align="left" ul="0" em="0" dw="0" dh="0" smooth="0" lang="de">Chocolate                         20,00 EUR A</text>
    <feed/>
    <text align="left" ul="1" em="0" dw="0" dh="0" smooth="0" lang="de">Apples                      15,00 EUR A</text>
    <feed/>
    <text align="left" ul="0" em="1" dw="0" dh="0" smooth="0" lang="de">Onion                   35,00 EUR  </text>
    <feed line="2"/>
    <text align="left" ul="0" em="0" dw="0" dh="0" smooth="0" lang="de">Cash                     35,00 EUR  </text>
    <cut/>
   </epos-print>
  </s:Body>
</s:Envelope>
转换后,我更改了节点中的一些值。 我把巧克力换成香草作为例子。 现在我需要将其转换回相同的字符串(当然是更改了节点值),以便将其保存在数据库中。 我怎么做? 根据php api,toString不起作用,而asXML()不起作用,我得到一条错误消息,asXML不能用于数组


请提供帮助。

您需要对原始对象调用
asXML()

$xml = new SimpleXMLElement($xmlText);

$texts = $xml->xpath("epos-print/text");

// Change chocolate to vanilla

$new_xml = $xml->asXML();

根据文档或方法:

返回SimpleXMLElement对象数组,如果出现错误,返回FALSE


因此xpath的返回是一个simplexml对象数组,默认情况下通过引用分配。

您如何调用
toString()
asXML()
方法?显示代码。我使用的asXML()如下:$text->asXML(),我看到了,看到了我的答案。
$xml = new SimpleXMLElement($xmlText);

$texts = $xml->xpath("epos-print/text");

// Change chocolate to vanilla

$new_xml = $xml->asXML();