【问题标题】:How to Verify if XML tag exists with PHP from external server如何验证 XML 标记是否与来自外部服务器的 PHP 一起存在
【发布时间】:2017-05-30 18:08:36
【问题描述】:

请原谅我的英语。

我正在为我的网站开发一种 sitemap.xml 系统,以将来自外部网站的产品包含到我的数据库中,就像 Google 对他的“蜘蛛”所做的那样,我刚刚开发了整个脚本来验证特定的 sitemap.xml包含所有必需的标签,并且有效:如果缺少任何标签,脚本会返回错误,但如果所有“产品”都具有所需的标签,则脚本会返回成功消息。

但我只有一个问题:如果 xml 外部文件有任何错误,例如缺少“关闭”标签,脚本将停止工作并返回错误。

我需要验证外部 xml 文件是否包含任何错误,如果结果为“否”,则继续执行我编写的其余代码。

这是我开发的脚本:

<?
$sitemap = htmlspecialchars(addslashes(stripslashes(strip_tags(trim($_POST['sitemap'])))));
$ref = htmlspecialchars(addslashes(stripslashes(strip_tags(trim($_POST['ver_id'])))));
    error_reporting(E_ALL);
        ini_set('display_errors', '1');

        session_start();

        include dirname(dirname(__FILE__))."/connectdb.php";
    $query = "SELECT * FROM website WHERE `ver_id` = '$ref'";
    $result = $mysqli->query($query);
    /* array asociativo */
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
    $url = $row['url'];
    $long_url = $url.'/'.$sitemap;
?>
<?php
$total = 0;
$xml=simplexml_load_file("$long_url") or die("Error: Cannot create object");
$count = $xml->count();
foreach($xml->children() as $producto) { 
    $id = $producto->id;
    $titulo = $producto->titulo; 
    $descripcion = $producto->descripcion;
    $fotografia = $producto->fotografia; 
    $precio = $producto->precio; 
    $costo = $producto->costo; 
    $horario = $producto->horario; 
    $tiempo = $producto->tiempo; 
    $cobertura = $producto->cobertura; 
    $keywords = $producto->keywords; 
    $destacar = $producto->destacar; 
    $delivery = $producto->delivery;

    if (!empty($id) && !empty($titulo) && !empty($descripcion) && !empty($fotografia) && !empty($precio) && !empty($costo) && !empty($horario) && !empty($tiempo) && !empty($cobertura) && !empty($keywords) && !empty($destacar) && !empty($delivery)) {
        $total = $total + 1; } else { $total = $total - 1; }        
}       
        if($total < $count){ header("Location:/user/sitio.php?id=$ref&mensaje=1"); } else 
            if($total == $count){   
            $query = "UPDATE website SET sitemap='$sitemap',sitemap_status='active' WHERE ver_id='$ref'";
            $result = $mysqli->query($query);
            header("Location:/user/sitio.php?id=$ref&mensaje=2");
            }
?>

【问题讨论】:

    标签: php xml curl


    【解决方案1】:

    用这个简单的脚本解决了!

    <?
    $dom = new DOMDocument;
    $dom->Load($long_url);
    if ($dom->validate()) {
        echo "Valid File";
    } else { echo "Invalid File"; }
    ?>
    

    谢谢大家。

    【讨论】:

      猜你喜欢
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多