Symfony2从存储库中保存xml文件

时间:2012-05-07 15:09:46

标签: php xml symfony

我正在使用Symfony2开发一个应用程序。我遇到的问题是,当从页面控制器调用的存储库执行一个函数时,该函数应该保存一个XML文件,但它没有,我不知道为什么。这是存储库中的函数:

public function IdaztekoaSortu($Hitzak, $Coref)
  {
    $EmaitzaXML = new \DOMDocument("1.0");
    header("Content-Type: text/plain");
    // erroa sortu
    $erroa = $EmaitzaXML->createElement("Idaztekoa");
    $EmaitzaXML->appendChild($erroa);
    $EmaitzaXML->formatOutput = true;

    $xmlHitzakDok = new \DOMDocument();
    $xmlMarkDok = new \DOMDocument();
    if($xmlHitzakDok->load($Hitzak) === FALSE){die('Errorea hitzen xml-a kargatzean');}
    if($xmlMarkDok->load($Coref) === FALSE){die('Errorea markagarrien xml-a kargatzean');}
    $xPath_Hitzak = new DOMXPath($xmlHitzakDok);
    $xPath_Mark = new DOMXPath($xmlMarkDok);
    $xPath = new DOMXPath($xmlHitzakDok);

    $Hurrengo_HitzaID = "word_1";
    $Hurrengo_Hitza_index = 1;

    foreach ($xPath_Hitzak->query('//words/word') AS $Hitza)
    {
      $HitzaID = $Hitza->getAttribute('id');

    if ($HitzaID == $Hurrengo_HitzaID)
    {
      $Handiena_MarkID = 0;  
          $Handiena_Hitzarentzat = -1;
          $Hitza_Index = substr($HitzaID , 5);

           foreach ($xPath_Mark->query('//markables/markable') AS $Markagarria)
               {
             $MarkID = $Markagarria->getAttribute('id');
             $Zatiak = explode("..", $Markagarria->getAttribute('span'));
             $MarkSpan1 = substr($Zatiak[0],5);
                 $MarkSpan2 = substr($Zatiak[1],5);
             $MarkSpan1ID = "word_" . $MarkSpan1;

            if ($MarkSpan1ID == $HitzaID && $MarkSpan2-$MarkSpan1 > $Handiena_Hitzarentzat)
            {
              $Handiena_MarkID = $Markagarria->getAttribute('id');                  
                      $Handiena_Hitzarentzat = $MarkSpan2-$MarkSpan1;
              $Handiena_MarkSpan1 = $MarkSpan1;
              $Handiena_MarkSpan2 = $MarkSpan2; 
            }
           }
               if($Handiena_Hitzarentzat == -1)
               {//Ez daude inongo markagarritan
         $x = $Hitza_Index+1;
             $Hurrengo_HitzaID = "word_" . $x;
         // umea sortu
         $elem = $EmaitzaXML->createElement("testua");
         $erroa->appendChild($elem);
         // testu nodoa sortu
         $testua = $EmaitzaXML->createTextNode($Hitza->nodeValue. " ");
         $elem->appendChild($testua);
         // atributu nodoa sortu
         $Mark_id = $EmaitzaXML->createAttribute("Mark_id");
         $elem->appendChild($Mark_id);
         // atributu balio nodoa sortu
         $gauzabalioa = $EmaitzaXML->createTextNode("null");
         $Mark_id->appendChild($gauzabalioa);
               }
           else
           {//Markagarri batean daude
         $y = $Handiena_MarkSpan2+1;
             $Hurrengo_HitzaID =  "word_" . $y;
         // umea sortu
         $elem = $EmaitzaXML->createElement("testua");
         $erroa->appendChild($elem);
         // testu nodoa sortu
         for ($i = $Handiena_MarkSpan1; $i <= $Handiena_MarkSpan2; $i++)
         {
                   foreach ($xPath->query('//words/word') AS $Hitz)
                   {
                     $ID = $Hitz->getAttribute('id');
             $ID_Index = substr($ID , 5);
                if ($ID_Index == $i)
                {
                  $testua = $EmaitzaXML->createTextNode($Hitz->nodeValue . " ");
                  $elem->appendChild($testua);
            }
           }
         }
           // atributu nodoa sortu
           $Mark_id = $EmaitzaXML->createAttribute("Mark_id");
           $elem->appendChild($Mark_id);
           // atributu balio nodoa sortu
           $gauzabalioa = $EmaitzaXML->createTextNode($Handiena_MarkID);
           $Mark_id->appendChild($gauzabalioa);
           // atributu nodoa sortu
           $Hitz_kop = $EmaitzaXML->createAttribute("Hitz_kop");
           $elem->appendChild($Hitz_kop);
           // atributu balio nodoa sortu
           $hitzkopbalioa = $EmaitzaXML->createTextNode($Handiena_MarkSpan2-$Handiena_MarkSpan1+1);
           $Hitz_kop->appendChild($hitzkopbalioa);

                   // atributu nodoa sortu
                   $MSpan1 = $EmaitzaXML->createAttribute("MarkSpan1");
                   $elem->appendChild($MSpan1);
                   // atributu balio nodoa sortu
                   $MSpan1balioa = $EmaitzaXML->createTextNode($Handiena_MarkSpan1);
                   $MSpan1->appendChild($MSpan1balioa);
                   // atributu nodoa sortu
                   $MSpan2 = $EmaitzaXML->createAttribute("MarkSpan2");
                   $elem->appendChild($MSpan2);
                   // atributu balio nodoa sortu
                   $MSpan2balioa = $EmaitzaXML->createTextNode($Handiena_MarkSpan2);
                   $MSpan2->appendChild($MSpan2balioa);      
           }
          }
    }
    // zuhaitza fitxategian gorde
    $EmaitzaXML->save('Idat.xml');
  }

正如您所看到的,XML树应该保存在Idat.xml中,但它不起作用,我不知道为什么。任何的想法?我想Idat.xml会保存在Symfony / web中,据我所知,我有权写入这个文件夹。

1 个答案:

答案 0 :(得分:0)

您需要使用完整路径。如何获取/ web文件夹的路径here