Php 验证XML数据验证是否存在值
我正在创建一个接受XML文档的Web服务,我所要做的就是返回一个true或false我的问题是如何验证接收到的XML并验证每个节点都有值 例如,这将验证:Php 验证XML数据验证是否存在值,php,xml,validation,Php,Xml,Validation,我正在创建一个接受XML文档的Web服务,我所要做的就是返回一个true或false我的问题是如何验证接收到的XML并验证每个节点都有值 例如,这将验证: <ItemUpdate> <ItemNmbr>1234</ItemNmbr> <ItemDesc>Part Number 1 - More info goes here</ItemDesc> <ItemPrice>8.25</ItemPrice> <Mo
<ItemUpdate>
<ItemNmbr>1234</ItemNmbr>
<ItemDesc>Part Number 1 - More info goes here</ItemDesc>
<ItemPrice>8.25</ItemPrice>
<Model>TC12B</Model>
</ItemUpdate>
1234
零件号1-更多信息在此显示
8.25
TC12B
但这一数据并不能说明问题
<ItemUpdate>
<ItemNmbr></ItemNmbr>
<ItemDesc>Part Number 1 - More info goes here</ItemDesc>
<ItemPrice></ItemPrice>
<Model>TC12B</Model>
</ItemUpdate>
零件号1-更多信息在此显示
TC12B
下面是到目前为止我是如何处理数据的。如果我缺少什么,我愿意接受建议:
<?PHP
if ( $_SERVER['REQUEST_METHOD'] === 'POST' ){
$dataPOST = trim(file_get_contents('php://input'));
$xmlData = simplexml_load_string($dataPOST);
//VALIDATE $xmlData;
if ($xmlData){
echo true;
}else{
echo false;
}
}
?>
为它定义一个XSD模式,然后调用。首先设置该模式可能需要一些工作,但从长远来看,这通常是值得的。您必须加载xml并遍历每个节点以检查它是否为空:
$doc = new DOMDocument();
/* you can use your variable containing response from post here instead of
* hard coded string
*/
$doc->loadXML('<ItemUpdate><ItemNmbr>1234</ItemNmbr><ItemDesc>Part Number 1 - More info goes here</ItemDesc><ItemPrice>8.25</ItemPrice><Model>TC12B</Model></ItemUpdate>');
$nodeBlank = false;
$x = $doc->documentElement;
foreach ($x->childNodes AS $item){
if(trim($item->nodeValue) == ''){
$nodeBlank = true;
}
}
if($nodeBlank){
echo 'false';
}else{
echo 'true';
}
$doc=newDOMDocument();
/*您可以在此处使用包含post响应的变量,而不是
*硬编码字符串
*/
$doc->loadXML('1234零件号1-更多信息在此显示8.25TC12B');
$nodeBlank=false;
$x=$doc->documentElement;
foreach($x->childNodes作为$item){
如果(修剪($item->nodeValue)=''){
$nodeBlank=true;
}
}
如果($nodeBlank){
回声“假”;
}否则{
回声“真”;
}
架构是否可以作为当前脚本的一部分?还是必须在另一个文件中?谢谢你提供的信息+1如果要将其用作嵌入文件中的字符串,可以使用。但是,我会发现单独保存.xsd模式更方便,以便将来其他代码可以轻松使用它。这就是我的想法,我只是不确定如何迭代数据。谢谢你的帮助+1我不会将此用于XML。我将使用Wrikkens方法处理模式验证。