2012-05-13 10 views
0

私のPHP XMLジェネレータクラスに問題があります。私はXML Creatorクラスを使用しました:PHP XML作成者がペルシア語/アラビア語のエンコーディング(UTF-8)をサポートしていません

class _XmlWriter { 

var $xml; 
var $indent; 
var $stack = array(); 

function _XmlWriter($indent = ' ') { 
    $this->indent = $indent; 
    $this->xml = '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; 
} 

function _indent() { 
    for ($i = 0, $j = count($this->stack); $i < $j; $i++) { 
     $this->xml .= $this->indent; 
    } 
} 

function push($element, $attributes = array()) { 
    $this->_indent(); 
    $this->xml .= '<' . $element; 
    foreach ($attributes as $key => $value) { 
     $this->xml .= ' ' . $key . '="' . htmlentities($value) . '"'; 
    } 
    $this->xml .= ">\n"; 
    $this->stack[] = $element; 
} 

function element($element, $content, $attributes = array()) { 
    $this->_indent(); 
    $this->xml .= '<' . $element; 
    foreach ($attributes as $key => $value) { 
     $this->xml .= ' ' . $key . '="' . htmlentities($value) . '"'; 
    } 
    $this->xml .= '>' . htmlentities($content) . '</' . $element . '>' . "\n"; 
} 

function emptyelement($element, $attributes = array()) { 
    $this->_indent(); 
    $this->xml .= '<' . $element; 
    foreach ($attributes as $key => $value) { 
     $this->xml .= ' ' . $key . '="' . htmlentities($value) . '"'; 
    } 
    $this->xml .= " />\n"; 
} 

function pop() { 
    $element = array_pop($this->stack); 
    $this->_indent(); 
    $this->xml .= "</$element>\n"; 
} 

function getXml() { 
    return $this->xml; 
} 

function create($root, $array) { 
    $xml = new _XmlWriter(); 
    $xml->push($root); 
    foreach ($array as $record) { 
     $xml->push('music', array('name' => $record[0], 
      'artist' => $record[1], 
      'album' => $record[2])); 
     $xml->pop(); 
    } 
    $xml->pop(); 
    return $xml->getXml(); 
} 
} 
?> 

XMLファイルを生成しますが、ペルシア語またはアラビア語のエンコーディングはサポートしていません。

XML Parsing Error: not well-formed 
Line Number 3, Column 98: 
<music name="name1" artist="&Ugrave;&Oslash;&sect;&Uacute;&copy;" album="album1"> 

私はメモ帳でXMLファイルを変更したときに、それはあまりにもペルシャ語で動作しますが、私のPHPのクラスは、間違ったエンコーディングを生成します。あなたの助けを借りてtnx

答えて

1

私は自分自身ではなくxml_writerクラスの機能を書かれた使用:

function xml_generator($root, $tag_array, $att_array, $val_array) { 
    $xml_str = '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; 
    $xml_str .= '<' . $root . '>' . "\n"; 
    for ($i = 0; $i < sizeof($val_array); $i++) { 
     $xml_str .= '<' . $tag_array[$i] . ' '; 
     for ($j = 0; $j < sizeof($att_array); $j++) { 
      $xml_str .= $att_array[$j] . '="' . $val_array[$i][$j] . '" '; 
     } 
     $xml_str .= '>' . '</' . $tag_array[$i] . '>' . "\n"; 
    } 
    $xml_str .= '</' . $root . '>'; 
    return $xml_str; 
} 

は今それは、Unicode(UTF-8)をサポートしています。

関連する問題