Php 验证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

我正在创建一个接受XML文档的Web服务,我所要做的就是返回一个true或false我的问题是如何验证接收到的XML并验证每个节点都有值

例如,这将验证:

<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方法处理模式验证。