Php DOM XML在loadXML上丢失数据
我需要关于PHP DOM XML的帮助 我有以下代码:Php DOM XML在loadXML上丢失数据,php,xml,dom,Php,Xml,Dom,我需要关于PHP DOM XML的帮助 我有以下代码: $xmlresponse= file_get_contents("https://webservices.cebroker.com/cebrokerwebservice.asmx/UploadXMLString?InXML=$data"); print_r ($xmlresponse); echo "<br /> <br />"; $xmlFile = new DOMDocument(); $works = $xml
$xmlresponse= file_get_contents("https://webservices.cebroker.com/cebrokerwebservice.asmx/UploadXMLString?InXML=$data");
print_r ($xmlresponse);
echo "<br /> <br />";
$xmlFile = new DOMDocument();
$works = $xmlFile->loadXML($xmlresponse);
echo "working = " . $works;
$searchNode = $xmlFile->getElementsByTagName( "licensee" );
print_r ($xmlFile);
$xmlresponse=文件获取内容(“https://webservices.cebroker.com/cebrokerwebservice.asmx/UploadXMLString?InXML=$data”);
打印(xmlresponse);
回声“
”;
$xmlFile=new DOMDocument();
$works=$xmlFile->loadXML($xmlresponse);
echo“working=”$作品
$searchNode=$xmlFile->getElementsByTagName(“被许可方”);
打印文件($xmlFile);
这就是答案。第一个XML是来自web服务的响应。第二个XML文件是我尝试将第一个XML响应加载到新的XML对象后得到的文件
<licensees>
<licensee valid="true" State="FL" licensee_profession="RN" licensee_number="2676612" state_license_format="" first_name="HENRY" last_name="GEITER" ErrorCode="" Message="" TimeStamp="11/16/2013 8:59:16 PM" />
<licensee valid="true" State="FL" licensee_profession="PN" licensee_number="1063421" state_license_format="" first_name="HENRY" last_name="GEITER" ErrorCode="" Message="" TimeStamp="11/16/2013 8:59:16 PM" />
</licensees>
working = 1
DOMDocument Object ( [doctype] => [implementation] => (object value omitted) [documentElement] => (object value omitted) [actualEncoding] => utf-8 [encoding] => utf-8 [xmlEncoding] => utf-8 [standalone] => 1 [xmlStandalone] => 1 [version] => 1.0 [xmlVersion] => 1.0 [strictErrorChecking] => 1 [documentURI] => /home/content/14/6722114/html/CCRN411/inc/ [config] => [formatOutput] => [validateOnParse] => [resolveExternals] => [preserveWhiteSpace] => 1 [recover] => [substituteEntities] => [nodeName] => #document [nodeValue] => [nodeType] => 9 [parentNode] => [childNodes] => (object value omitted) [firstChild] => (object value omitted) [lastChild] => (object value omitted) [previousSibling] => [attributes] => [ownerDocument] => [namespaceURI] => [prefix] => [localName] => [baseURI] => /home/content/14/6722114/html/CCRN411/inc/ [textContent] => )
工作=1
DOMDocument对象([doctype]=>[implementation]=>(省略对象值)[documentElement]=>(省略对象值)[actualEncoding]=>utf-8[编码]=>utf-8[xmlEncoding]=>utf-8[独立]=>1[xmlStandalone]=>1[version]=>1.0[xmlVersion]=>1.0[严格的错误检查]=>1[documentURI]=>/home/content/14/6722114/html/CCRN411/inc/[config]=>[formatOutput]=>[validateOnParse]=>[resolveExternals]=>[preserveWhiteSpace]=>1[recover]=>[substituteEntities]=>[nodeName]=>\document[nodeValue]=>[nodeType]=>9[parentNode]=>[childNodes]=>[childNodes]=>(省略对象值)[firstChild]=>(省略对象值)[lastChild]=>(对象值省略)[previousSibling]=>[属性]=>[所有者文档]=>[名称空间URI]=>[前缀]=>[本地名称]=>[基本URI]=>/home/content/14/6722114/html/CCRN411/inc/[文本内容]=>)
为什么当我试图加载XML以进行解析时,我的数据会消失?我已经解决了这个问题。我不确定这是最佳解决方案还是仅仅是一次破解,但我得到了API响应,并对其应用了html_decode_实体,并重新格式化了xmlns名称空间信息。然后我将其写入了一个文件。我创建了一个新的DOM文档并立即重新加载从保存的xml文件中删除它。然后一切正常。如果这是一个黑客行为,并且有更干净的方法来完成任务,请有人发布它并让我知道。尝试使用
GetElementsByTagnames
,因为元素是命名空间的:
<?php
$xml = <<<END
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://example.com/CEBrokerWebService/">
<licensees>
<licensee valid="true" State="FL" licensee_profession="RN" licensee_number="2676612" state_license_format="" first_name="HENRY" last_name="GEITER" ErrorCode="" Message="" TimeStamp="11/16/2013 8:59:16 PM" />
<licensee valid="true" State="FL" licensee_profession="PN" licensee_number="1063421" state_license_format="" first_name="HENRY" last_name="GEITER" ErrorCode="" Message="" TimeStamp="11/16/2013 8:59:16 PM" />
</licensees>
</string>
END;
$doc = new DOMDocument();
$doc->loadXML($xml);
$nodes = $doc->getElementsByTagNameNS('http://example.com/CEBrokerWebService/', 'licensee');
printf("Found %d nodes\n", $nodes->length);
print $doc->saveXML();
结束;
$doc=新的DOMDocument();
$doc->loadXML($xml);
$nodes=$doc->getelementsbytagnames('http://example.com/CEBrokerWebService/","持牌人";;
printf(“找到%d个节点\n”,$nodes->length);
打印$doc->saveXML();
BTW,当我将xmlresponse信息复制并粘贴到php文件中的字符串中时,结果是完美的。因此,我的问题是,为什么loadXML不将xmlresponse转换为有效的XML对象,但是如果我将信息用作文本字符串并尝试加载它,效果会很好?更多信息。如果我将以下内容添加到我的php文件-code
$xmlFile=new DOMDocument;$works=$xmlFile->loadXML($xmlresponse);$filename3=“testing123responseDOM.xml”;$xmlFile->save($filename3)或die(“错误”);code
它保存了一个文件,其中包含以下code
许可证持有人code
为什么我丢失了实际XML中的