你好,我再一次。在我的上一个问题XML parsing error (RESOLVED) XML Sample之后,这真的帮助我了解了更多。我正在另一个砖墙上奔跑。
我的问题: 我需要做的是在我的php文档所在的同一目录中写一个.xml文件。因此,当我执行脚本时,它应该自动将.xml文件保存到php文件所在的目录中。这可能吗?如何?
目前我正在尝试使用openURI输出文件,但是当我这样做时,我收到以下错误(翻译自荷兰语):
有趣的是,如果我使用php://输出,它会在浏览器中正确显示所有内容。
XML-Parse Error: no element found
Location: xml.php
Rownumber 1, column 1:
代码:
<?php
//SELECTEER ALLES VAN DATABASE PROJECTEN
$sql = "SELECT * FROM projecten ORDER BY id";
$res = mysql_query($sql);
//BEGIN XML
$xml = new XMLWriter();
$xml->openURI('file.xml');
$xml->setIndentString ( '	' );
$xml->startDocument( '1.0', 'UTF-8', 'no' );
$xml->setIndent(true);
//FUNCTIE VOOR MAKKELIJKER INVOEREN
function addNode( $xml, $NodeName, $Value ) {
$xml->startElement( $NodeName );
$xml->writeCData( $Value );
$xml->endElement();
}
//START HOOFD ELEMENT
$xml->startElement('projecten');
//WHILE LOOP DOOR DATABASE
while ($row = mysql_fetch_assoc($res)) {
//START PROJECT
$xml->startElement('project');
$xml->writeAttribute('id', $row['id']);
addNode( $xml, "id", $row["id"] );
addNode( $xml, "projectnaam", $row['projectnaam'] );
addNode( $xml, "status", $row['status'] );
addNode( $xml, "klantnaam", $row['klantnaam'] );
addNode( $xml, "startdatum", $row['startdatum'] );
addNode( $xml, "eindddatum", $row['einddatum'] );
//EIND PROJECT
$xml->endElement();
}
//EINDE HOOFD ELEMENT
$xml->endElement();
//EINDE DOCUMENT
$xml->endDocument();
header('Content-type: text/xml');
$xml->flush();
?>
再次感谢,再次......
答案 0 :(得分:1)
我建议你使用fopen。这是我的代码 -
<?php
include('db.php');
$sql = "SELECT * FROM `data`";
$result = mysqli_query($conn,$sql);
$xml = new XMLWriter();
$xml->openMemory();
$xml->setIndent(true);
function addNode($xml,$NodeName,$Value){
$xml->startElement($NodeName);
$xml->writeCData($Value);
$xml->endElement();
}
$xml->startElement('Details');
while($row = mysqli_fetch_assoc($result)){
$xml->startElement('Data');
$xml->writeAttribute('date',$row['date']);
addNode($xml,"Id",$row["id"]);
addNode($xml,"age",$row["age"]);
addNode($xml,"Name",$row["name"]);
$xml->endElement();
}
$xml->endElement();
$xml->endDocument();
$content = $xml->flush();
$fp = fopen("filetobesaved.xml",'w');
fwrite($fp,$content);
fclose($fp);
header('Content-type: text/xml');
echo $content;
?>
此代码将创建一个生成xml文件并将其保存在呈现php代码文件的同一文件夹中,并将其保存为名称filetobesaved.xml。如果不是w
,则$fp = fopen("filetobesaved.xml",'w');
将创建该文件exists- $filename = 'D:/foldertobecreated/filetobesaved.xml';
$dirname = dirname($filename);
if (!is_dir($dirname))
{
mkdir($dirname, 0755, true);
}
$fp = fopen("$dirname\\filetobesaved.xml",'w');
如果您想创建一个新目录并将.xml文件保存到其中,那么您可以这样做 -
.carousel-active-thumb {
border-bottom: 5px solid #000;
padding: 5px;
margin: 2px;
}
.carousel-thumb {
border-bottom: 5px solid #fff;
padding: 5px;
margin: 2px;
}
.carousel-thumbnail-center {
text-align: center;
}
.carousel-thumbnail-center ol {
display: inline-block;
padding: 0;
/* For IE */
zoom: 1;
*display: inline;
}
.carousel-inner > .item > img {
margin-left: auto;
margin-right: auto;
display: block;
height: 350px;
width: auto;
}
.carousel-active-thumb a img {
height: 41px;
width: auto;
}
.carousel-thumb a img {
height: 41px;
width: auto;
}
答案 1 :(得分:0)
另一种可能性是使用 __ DIR __ 给出 openURI 的绝对路径:
$xml->openURI(__DIR__ . 'file.xml');