好日子我正尝试将xml发送到Web服务,但需要在发送前清除xml。到目前为止,我尝试了不同的方式,现在已经停滞了一段时间。如何在发送到Web服务之前清理xml请求
我从表单中捕获数据并将其发布到我的php文件中进行处理。如果用户没有输入长度/宽度/高度的任何数据,那么我想清理我的xml并删除空元素,以便它可以在发送xml请求的服务器上通过验证。
下面是我的文章中的数据cpatured的一个片段,并相应地构建xml文件,但如果这些维度被忽略会怎么样?我还可以清理其他空的元素吗?
$xmlRequest = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<mailing-scenario xmlns="http://www.mysite.com/ws/ship/rate-v2">
<customer-number>{$mailedBy}</customer-number>
<parcel-characteristics>
<weight>{$weight}</weight>
<dimensions>
<length>{$length}</length>
<width>{$width}</width>
<height>{$height}</height>
</dimensions>
</parcel-characteristics>
<origin-postal-code>{$originPostalCode}</origin-postal-code>
<destination>
<domestic>
<postal-code>{$postalCode}</postal-code>
</domestic>
</destination>
</mailing-scenario>
XML;
$xmlRequest = phpquery::newDocument();
$xp = new DOMXPath($xmlRequest->getDOMDocument());
foreach($xp->query('//*[not(node()) or normalize-space() = ""]') as $node) {
$node->parentNode->removeChild($node);
}
我不确定你的意思是干净的。如果您使用php构建XML文件,只需检查提供的用户数据是否有效。如果你需要清理它,则构建另一个XML版本。 如果你的XML已经解析了所有节点!并检查它们是否有效。 – mjb4
感谢我对此新。我已经构建了如上所示的xml,但如果用户未输入长度,宽度,高度,我如何去除维度元素。我如何重建另一个XML并省略空的?谢谢 – user2859027
我从来没有看过这个XML查询的东西,从PHP需要做到这一点。但试试看[文档](http://php.net/manual/de/class.domxpath.php)。 你只需要搜索方式来查找像宽度类型的节点,然后检查它的值,如果无效删除它,或者它的父母或父母的父母... – mjb4