SimpleXMLElement不会保存可读格式良好的文件

时间:2016-10-04 11:22:32

标签: php xml

以下是代码:

for($i = 0; $i < count(array_values($resources['titles'])); $i++){
                //var_dump($key);
                $ad = $xml->addChild('ad');
                $ad->addChild('title', htmlentities(htmlspecialchars(substr($resources['titles'][$i], 0, 70))));
                $ad->addChild('text', 'Текст текст');
                $ad->addChild('price', htmlentities($resources['prices'][$i]));
                //file_put_contents('test.txt',$resources['titles'][$i]."\n", FILE_APPEND);

            }

$xml->asXML($this->_xmlOutput);

它可以保存所有数据,但xml文件格式不正确,而且西里尔符号(很多都是)变成&amp; #x447(那是什么代码?)。文件也保存为ansi,而不是utf-8。所以问题是 - 如何正确创建格式良好且可读(带有西里尔符号)的XML文档?

2 个答案:

答案 0 :(得分:0)

使用适当的编码标头和标记1对XML进行前缀。 XML中的第一行应该是:

{{1}}

答案 1 :(得分:0)

使用DOMDocument找到更好的解决方案。继承人在循环中重写了代码示例:

            $node_ad = $xml->CreateElement('ad');
            $node_ads->appendChild($node_ad); 

            //$node_ads->addChild('title', htmlentities(htmlspecialchars(substr($resources['titles'][$i], 0, 70))));
            $title = $xml->CreateElement('title', htmlentities(htmlspecialchars(substr($resources['titles'][$i], 0, 70))));
            $node_ad->appendChild($title);

            $text = $xml->CreateElement('text', 'Текст текст');
            $node_ad->appendChild($text);

            $images_node = $xml->CreateElement('images');
            $node_ad->appendChild($images_node);                 

            $images = $xml->CreateElement('image', $this->_mainUrl.'/uploads/'.$resources['images'][$i]);
            $images_node->appendChild($images);