简体   繁体   English

如何使用php修复格式错误的xml并将文件写入我的服务器

[英]How to fix this malformed xml using php and write the file to my server

<?xml version="1.0" encoding="UTF-8"?><tv><channel id="Nick Jr.">
    <display-name lang="en">Nick Jr. MX</display-name><icon src="Nick Jr..png" />
    <url>http://www.my.tv</url>
  </channel><channel id="The NFL Network ">
    <display-name lang="en">The NFL Network </display-name><icon src="The NFL Network .png" />
    <url>http://www.my.tv</url>
  </channel><channel id="ESPN">
    <display-name lang="en">ESPN</display-name><icon src="ESPN.png" />
    <url>http://www.my.tv</url>
  </channel><channel id="ESPN News">
    <display-name lang="en">ESPN News</display-name><icon src="ESPN News.png" />
    <url>http://www.my.tv</url>
  </channel><channel id="ESPNU">
    <display-name lang="en">ESPNU</display-name><icon src="ESPNU.png" />
    <url>http://www.my.tv</url>
  </channel><channel id="ESPN2">
    <display-name lang="en">ESPN2</display-name><icon src="ESPN2.png" />
    <url>http://www.my.tv</url>
  </channel><channel id="The NFL Network">
    <display-name lang="en">The NFL Network</display-name><icon src="The NFL Network.png" />
    <url>http://www.my.tv</url>
  </channel><channel id="MLB Network">
    <display-name lang="en">MLB Network</display-name><icon src="MLB Network.png" />
    <url>http://www.my.tv</url>
  </channel><channel id="MavTV">
    <display-name lang="en">MavTV</display-name><icon src="MavTV.png" />
    <url>http://www.my.tv</url>
  </channel>
</tv>

This the xml. 这是xml。 Normally this will on get from a url. 通常,这将从URL获取。 like for example url = ' http://hello.com/myxml.xml 例如url =' http://hello.com/myxml.xml

I wanna make a php script that fix this xml And rewrite fixed xml to my server(localhost) 我想制作一个可修复此xml的php脚本,并将已修复的xml重写到我的服务器(本地主机)

And help? 有帮助吗?

use SimpleXML library analysis, and rewrite fixed xml to your server 使用SimpleXML库分析,并将固定的xml重写到您的服务器

在此处输入图片说明

The XML is not malformed. XML格式不正确。 It is perfectly fine. 很好。 Here is not even a notice/warning. 这里甚至没有通知/警告。

libxml_use_internal_errors();
$document = new DOMDocument();
$document->loadXml($xml);
var_dump(libxml_get_errors());

Output: 输出:

array(0) {
}

I think you might want reformat the XML. 我认为您可能想要重新格式化XML。 You can do this with DOM. 您可以使用DOM做到这一点。

$document = new DOMDocument();
$document->preserveWhiteSpace = FALSE;
$document->formatOutput = TRUE;
$document->loadXml($xml);
echo $document->saveXml();

Output: 输出:

<?xml version="1.0" encoding="UTF-8"?>
<tv>
  <channel id="Nick Jr.">
    <display-name lang="en">Nick Jr. MX</display-name>
    <icon src="Nick Jr..png"/>
    <url>http://www.my.tv</url>
  </channel>
  <channel id="The NFL Network ">
    <display-name lang="en">The NFL Network </display-name>
    <icon src="The NFL Network .png"/>
    <url>http://www.my.tv</url>
  </channel>
  ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM