如何使用PHP保存XML

8
有人知道如何使用PHP创建和保存XML吗?我需要像这样的东西:
<jukebox>
  <track source="" artist="" album="" title="" />
  <track source="" artist="" album="" title="" />
  <track source="" artist="" album="" title="" />
  <track source="" artist="" album="" title="" />
</jukebox>

嗯,这是什么意思?我认为我们需要更多的信息来弄清楚事情。 - user201788
http://www.php.net/manual/en/simplexmlelement.asXML.php - The Surrican
1
你应该去“接受”下面的答案。点击帮助你最多的答案旁边的复选标记。这是声望系统在这里的工作方式。通过这样做,你会鼓励人们回答你的问题。 - p.campbell
1个回答

28

这可能就是您在寻找的内容。


    //Creates XML string and XML document using the DOM 
    $dom = new DomDocument('1.0', 'UTF-8'); 

    //add root
    $root = $dom->appendChild($dom->createElement('Root'));

    //add NodeA element to Root
    $nodeA = $dom->createElement('NodeA');
    $root->appendChild($nodeA);

    // Appending attr1 and attr2 to the NodeA element
    $attr = $dom->createAttribute('attr1');
    $attr->appendChild($dom->createTextNode('some text'));
    $nodeA->appendChild($attr);
/*
** insert more nodes
*/

    $dom->formatOutput = true; // set the formatOutput attribute of domDocument to true

    // save XML as string or file 
    $test1 = $dom->saveXML(); // put string in test1
    $dom->save('test1.xml'); // save as file

想要了解更多信息,请查看DOM文档

要实现您想要的功能:


    //Creates XML string and XML document using the DOM 
    $dom = new DomDocument('1.0', 'UTF-8'); 

    //add root == jukebox
    $jukebox = $dom->appendChild($dom->createElement('jukebox'));

    for ($i = 0; $i < count($arrayWithTracks); $i++) {

        //add track element to jukebox
        $track = $dom->createElement('track');
        $jukebox->appendChild($track);

        // Appending attributes to track
        $attr = $dom->createAttribute('source');
        $attr->appendChild($dom->createTextNode($arrayWithTracks[$i]['source']));
        $track->appendChild($attr);
        $attr = $dom->createAttribute('artist');
        $attr->appendChild($dom->createTextNode($arrayWithTracks[$i]['artist']));
        $track->appendChild($attr);
        $attr = $dom->createAttribute('album');
        $attr->appendChild($dom->createTextNode($arrayWithTracks[$i]['album']));
        $track->appendChild($attr);
        $attr = $dom->createAttribute('title');
        $attr->appendChild($dom->createTextNode($arrayWithTracks[$i]['title']));
        $track->appendChild($attr);
    }

    $dom->formatOutput = true; // set the formatOutput attribute of domDocument to true

    // save XML as string or file 
    $test1 = $dom->saveXML(); // put string in test1
    $dom->save('test1.xml'); // save as file

干杯


嗨vfn,再次感谢您对我的问题的回答和解决方案,但如果可以的话,我能不能再向您请教一些问题呢?您帮助我处理的XML文件通常会用PHP调用一个名为“MP3”的目录中的音乐文件进行填充。我可以使用PHP获取目录中所有文件的列表,但是我该如何将这些信息添加到XML文件中呢?我真正需要的唯一信息是文件的源/位置,至于其他信息,我将使用一个MP3元数据类来处理。非常感谢您的帮助。 - Malcolm
你是什么意思?我无法理解你的问题! - vfn
好的,有了你之前帮我处理的 XML 文件,现在我想要能够将位于 Web 服务器目录中的所有文件的信息添加到其中。主要字段将是 MP3 文件的“源”位置,在理论上通过循环遍历并列出目录中的所有文件并将它们添加到 XML 文件中。 - Malcolm
嘿,马尔科姆,看起来你知道如何回答你的问题。请看一下我对我的答案所做的编辑,并告诉我是否可以。现在它正在迭代一个将拥有所有曲目的数组,并且对于每个曲目,将向xml的根添加一个新节点。 - vfn
我再次想感谢你,现在我已经解决了这个问题,如果不是你的帮助,我还会继续努力,谢谢 ;) - Malcolm
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接