0
    <?xml version="1.0" encoding="UTF-8"?>
<testSuiteResults>
  <testSuite>
    <startTime>13:46:06</startTime>
    <status>FAILED</status>
    <testSuiteName>Web TestSuite</testSuiteName>
    <timeTaken>13907</timeTaken>
    <testRunnerResults>
      <testCase>
        <reason>Failing due to failed test step</reason>
        <startTime>13:46:06</startTime>
        <status>FAILED</status>
        <testCaseId>2c0c10d3-f76f-43ae-900d-6e64bb96203f</testCaseId>
        <testCaseName>CorTestCase</testCaseName>
        <timeTaken>7021</timeTaken>
        <testStepResults>
          <result>
            <message>Step 1 [www.coriolis.eu.org] OK: took 2309 ms</message>
            <name>www.coriolis.eu.org</name>
            <order>2</order>
            <started>13:46:06.266</started>
            <status>OK</status>
            <timeTaken>2309</timeTaken>
          </result>
</testSuite>
</testCase>
</testSuiteResults>

こんにちは、私はこの XML ファイルを持っています。配列内の「status, timeTaken」タグを取得しようとしています。私はこの機能を使用します:

function XMLtoARRAY($fichier,$item,$champs) {
  // on lit le fichier
  if(file_exists($fichier)){
        if($chaine = @implode("",@file($fichier))) {

                // on éclate les objets <item>
                $tmp = preg_split("/<\/?"."\/".$item.">/",$chaine);
               // $tmp4 = preg_split("/<\\/?".$item.">/", $chaine);

                //for($j=0;$j<sizeof($tmp4)-1;$i+=1){
                // on parcours les <item>
                for($i=0;$i<sizeof($tmp)-1;$i+=1){
                        // on recherche les champs demandés
                        foreach($champs as $champ) {
                                $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]); 
                                // on ajoute l'élément au tableau
                                $tmp3[$i][$champ] = @$tmp2[1];
                        }
                }
                //}
                // retourne le tableau associatif
                return $tmp3;


        }
  }else{
          return "Le fichier n'existe pas";
  }
}

問題は、データベースの空の行に入れたいときです。ここにデータベース用の私の関数があります:

function XMLtoSQL($fichier,$item,$champs,$test=0){

        //On recupère le tableau PHP correspondant au fichier XML
        $xml = XMLtoARRAY($fichier,$item,$champs);
        if(is_array($xml)){
                getconnection();
                $nom_table="result";
                $requetes_insert=array();
                $requete="";
                foreach($xml as $un_enregistrement){
                        $requete="INSERT INTO ".$nom_table;
                        $col_name="(";
                        $value="(";
                        foreach($un_enregistrement as $champs=>$valeur){
                                $col_name.=$champs.",";

                                $value.="\"".$valeur."\",";

                        }
                        //$col_name=substr($col_name,0,-1);
                        $value=substr($value,0,-1);
                        $requete.=" VALUES ".$value.")";
                        $requetes_insert[]=$requete;

                }

                //Si tout est ok on vide la table
               /* $vidange_table="TRUNCATE TABLE ".$nom_table;

                if($test==0){

                        $res_vidange=mysql_query($vidange_table);
                        if(!$res_vidange){

                                return "Erreur lors de la vidange de la table : ".$nom_table;
                        }
                }
                */
                //Puis on execute les requêtes une par une
                foreach($requetes_insert as $key=>$une_requete){
                        if($test==0){
                                $res_requete=mysql_query($une_requete);
                                if(!$res_requete){
                                        return "Erreur lors de l'execution de la requete num ".$key." : ".$une_requete;

                                }
                        }

                }
                return "Importation des ".sizeof($requetes_insert)." requetes reussie";
        }else{
                return "L'erreur suivante a ete detectee : ".$xml;
        }
}

この空行を削除したい。ありがとうございました

4

1 に答える 1

0

PHP には組み込みの XML パーサーがあり、独自のパーサーを作成しようとするのではなく、使用する必要があります (この場合、不正な形式のファイル構造に遭遇したときにエラーが発生しやすくなる可能性があります)。

これに関する「本」全体があり、PHP マニュアル (フランス語版にリンクされています) にあります。

空行について: 空行は正確にどこにあるのでしょうか? それらの空の文字列が「現れる」行を特定できますか?

PS: 可能であれば、コメントには英語を使用してください。ここの人々がそれらをより簡単に理解できるようにします。:)

于 2013-06-06T10:06:19.080 に答える