美好的一天,我正在尝试将 xml 发送到 Web 服务,但需要在发送之前清理 xml。到目前为止,我尝试了不同的方法,现在被卡住了一段时间。
我从表单中捕获数据并将其发布到我的 php 文件中进行处理。如果用户没有在长度/宽度/高度中输入任何数据,那么我想清理我的 xml 并删除空元素,以便它也可以在发送 xml 请求的服务器上通过验证。
下面是从我的帖子中提取的数据片段,并相应地构建了 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);
}