使用PHP将文本文件转换为XML
我有几个.txt格式的文件(这些文件要么保存在文件夹中,要么在执行后从桌面打开) 我想用PHP构建一个应用程序,可以检索这些文件并以XML格式保存,然后用XSLT动态显示 有什么方法可以让我这样做吗 这是我到目前为止的代码:使用PHP将文本文件转换为XML,php,xml,xml-parsing,Php,Xml,Xml Parsing,我有几个.txt格式的文件(这些文件要么保存在文件夹中,要么在执行后从桌面打开) 我想用PHP构建一个应用程序,可以检索这些文件并以XML格式保存,然后用XSLT动态显示 有什么方法可以让我这样做吗 这是我到目前为止的代码: $fp = fopen('optim.txt', 'r'); $xml = new XMLWriter; $xml->openURI('php://output'); $xml->setIndent(true); // makes output cleaner
$fp = fopen('optim.txt', 'r');
$xml = new XMLWriter;
$xml->openURI('php://output');
$xml->setIndent(true); // makes output cleaner
$xml->startElement('qualité');
while ($line = fgetcsv($fp)) {
$xml->startElement('qualité');
$xml->writeElement('critere', $line[0]);
$xml->writeElement('poids', $line[1]);
$xml->writeElement('Vm', $line[2]);
$xml->writeElement('SV', $line[3]);
$xml->writeElement('critere', $line[4]);
$xml->writeElement('poids', $line[5]);
$xml->writeElement('Vm', $line[6]);
$xml->writeElement('SV', $line[7]);
$xml->writeElement('resultat', $line[8]);
$xml->endElement();
}
$xml->endElement();
但是没有结果,有人能帮我找出哪里出了问题吗?问题在于您的线路:-
$xml->openURI('php://output');
这会将输出直接发送到客户端浏览器,我认为这就是您想要做的。但是,您需要设置正确的标题来反映这一点
在代码中添加以下行
header("Content-Type: text/xml");
您将直接在浏览器中看到输出。这一行的位置并不重要,但必须在任何内容发送到浏览器之前,最好将其放在$fp=fopen('optim.txt',r')之前代码>
您还应该将最外层元素的名称更改为“qualité”的复数形式,这样就不会有同名的父元素和子元素
另外,在$xml->setIndent(true)之后代码>添加此行$xml->startDocument()代码>否则您的xml将无效
在进一步挖掘之后,似乎有必要设置一个默认时区(我不知道为什么),所以将此添加到脚本的开头:-
date_default_timezone_set("GMT"); //or whatever your default timezone is.
这意味着您的代码应该如下所示:-
date_default_timezone_set("GMT"); //or whatever your default timezone is.
header("Content-Type: text/xml"); //Added as part of answer
$fp = fopen('optim.txt', 'r');
$xml = new XMLWriter;
$xml->openURI('php://output');
$xml->startDocument(); // added as part of answer
$xml->setIndent(true); // makes output cleaner
$xml->startElement('qualités'); //changed as part of answer
while ($line = fgetcsv($fp)) {
$xml->startElement('qualité');
$xml->writeElement('critere', $line[0]);
$xml->writeElement('poids', $line[1]);
$xml->writeElement('Vm', $line[2]);
$xml->writeElement('SV', $line[3]);
$xml->writeElement('critere', $line[4]);
$xml->writeElement('poids', $line[5]);
$xml->writeElement('Vm', $line[6]);
$xml->writeElement('SV', $line[7]);
$xml->writeElement('resultat', $line[8]);
$xml->endElement();
}
$xml->endElement();
我不知道你所说的没有结果是什么意思,你能再清楚一点吗。还可以先尝试写入文件,以便查看实际输出。当我执行代码时……我没有任何结果……请你通过邮件与我联系好吗foufaskt@gmail.com....thnks很多:)