2014-02-17 66 views
2

我的問題是與PHP的simpleXML,我有一個函數,我的數組轉換爲XML,但有時忘記放置每個「<」,因此XML將無效。有人看過類似的東西嗎?PHP simpleXML輸出sintax無效

private function array_to_xml($baseInfo, &$xmlBaseInfo) { 

    foreach($baseInfo as $key => $value) { 
     if(is_array($value)) { 
      if(!is_numeric($key)){ 
       $subnode = $xmlBaseInfo->addChild("$key"); 
       $this->array_to_xml($value, $subnode); 
      } 
      else{ 
       $subnode = $xmlBaseInfo; 
       $this->array_to_xml($value, $subnode); 
      } 
     } 
     else { 
      $value = utf8_encode($value);    
      $value = str_replace("&", "&amp;", $value); 

      $xmlBaseInfo->addChild("$key", $value); 

     } 
    } 
} 

這就是我把它稱爲類:

$xmlBaseInfo = new SimpleXMLElement('<'.'?xml version="1.0" encoding="iso-8859-2" ?'.'>'."\n" ."<data></data>"); 
    $this->array_to_xml($this->data,$xmlBaseInfo); 
    $dom = new DOMDocument('1.0'); 
    $dom->preserveWhiteSpace = false; 
    $dom->formatOutput = true; 
    $dom->loadXML($xmlBaseInfo->asXML()); 
    echo $dom->saveXML(); 

有時候,我是怎麼說的輸出這樣的XML:

<?xml version="1.0" encoding="iso-8859-2"?> 
<data> 
    <jatek_id>1</jatek_id> 
    <cim>The Big Bang Theory</cim> 
    <alcim>alcím</alcim> 
    <leiras>Lorem Ipsum....</leiras> 
    <fotonev></fotonev> 
    <status>0</status> 
    <megjelenik>Nov 11 2011 11:11:11:000AM</megjelenik> 
    <winnertext/> 
    <szabaly/> 
    <lap_id>9</lap_id> 
    <questions> 
    <question> 
     <jatekkerdes_id>1</jatekkerdes_id> 
     <jatek_id>1</jatek_id> 
     <kerdes>Tyúk vagy tojás</kerdes> 
     <sorrend>10</sorrend> 
     <megoldas>1</megoldas> 
     <fotonev/> 
     <answers> 
     <answer> 
      <jatekvalasz_id>1</jatekvalasz_id> 
      <kerdes_id>1</kerdes_id> 
      <valasz>Tyúk</valasz> 
      <sorrend>10</sorrend> 
      <fotonev/> 
     </answer> 
     <answer> 
      <jatekvalasz_id>2</jatekvalasz_id> 
      <kerdes_id>1</kerdes_id> 
      <valasz>Tojás</valasz> 
      <sorrend>20</sorrend> 
      <fotonev/> 
     </answer> 
     </answers> 
    </question> 
    <question> 
     <jatekkerdes_id>2</jatekkerdes_id> 
     <jatek_id>1</jatek_id> 
     <kerdes>Almafa vagy borecet?</kerdes> 
     <sorrend>20</sorrend> 
     <megoldas>3</megoldas> 
     <fotonev/> 
     <answers> 
     <answer> 
      <jatekvalasz_id>3</jatekvalasz_id> 
      <kerdes_id>2</kerdes_id> 
      valasz>Almafa</valasz> //Here is the problem! missing < 
      <sorrend>30</sorrend> 
      <fotonev/> 
     </answer> 
     <answer> 
      <jatekvalasz_id>4</jatekvalasz_id> 
      <kerdes_id>2</kerdes_id> 
      <valasz>Borecet</valasz> 
      <sorrend>40</sorrend> 
      <fotonev/> 
     </answer> 
     </answers> 
    </question> 
    </questions> 
</data> 

THX的幫助

它發生在這個陣列上:

Array 
(
[jatek_id] => 1 
[cim] => The Big Bang Theory 
[alcim] => alcím 
[leiras] => Lorem Ipsum... 
[fotonev] => 
[status] => 0 
[megjelenik] => Nov 11 2011 11:11:11:000AM 
[winnertext] => 
[szabaly] => 
[lap_id] => 9 
[questions] => Array 
    (
     [0] => Array 
      (
       [question] => Array 
        (
         [jatekkerdes_id] => 1 
         [jatek_id] => 1 
         [kerdes] => Tyúk vagy tojás 
         [sorrend] => 10 
         [megoldas] => 1 
         [fotonev] => 
         [answers] => Array 
          (
           [0] => Array 
            (
             [answer] => Array 
              (
               [jatekvalasz_id] => 1 
               [kerdes_id] => 1 
               [valasz] => Tyúk 
               [sorrend] => 10 
               [fotonev] => 
              ) 

            ) 

           [1] => Array 
            (
             [answer] => Array 
              (
               [jatekvalasz_id] => 2 
               [kerdes_id] => 1 
               [valasz] => Tojás 
               [sorrend] => 20 
               [fotonev] => 
              ) 

            ) 

          ) 

        ) 

      ) 

     [1] => Array 
      (
       [question] => Array 
        (
         [jatekkerdes_id] => 2 
         [jatek_id] => 1 
         [kerdes] => Almafa vagy borecet? 
         [sorrend] => 20 
         [megoldas] => 3 
         [fotonev] => 
         [answers] => Array 
          (
           [0] => Array 
            (
             [answer] => Array 
              (
               [jatekvalasz_id] => 3 
               [kerdes_id] => 2 
               [valasz] => Almafa 
               [sorrend] => 30 
               [fotonev] => 
              ) 

            ) 

           [1] => Array 
            (
             [answer] => Array 
              (
               [jatekvalasz_id] => 4 
               [kerdes_id] => 2 
               [valasz] => Borecet 
               [sorrend] => 40 
               [fotonev] => 
              ) 

            ) 

          ) 

        ) 

      ) 

    ) 

) 
+0

不完全肯定這一點,但'&'在'功能array_to_xml($ baseInfo,&$ xmlBaseInfo)'可能是一個因素。 –

+0

Thx對於這個想法,但沒有任何變化:S這個錯誤隨機出現很奇怪。所以有時它沒有任何錯誤。 – Okonai

+0

不客氣。我不知道它可能是什麼。這是我唯一站出來的東西。我會對此表示讚賞,看看是否有其他人拿起你的問題並希望找到解決方案。 –

回答

0

問題'已解決'...

看起來像我們公司的服務器錯誤的東西。在不同的電腦上試過,輸出沒有問題。

非常感謝您的幫助反正:)