Php 访问单个XML DOM文档节点

Php 访问单个XML DOM文档节点,php,xml,rss,domdocument,Php,Xml,Rss,Domdocument,我完全不熟悉DOM文档,基本上我正在尝试做的是加载一个RSS提要并只选择一个节点,然后将其保存到XML文件中 以下是我从web提要加载的XML: <?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> <channel> <title>Markets</title> <description/> <li

我完全不熟悉DOM文档,基本上我正在尝试做的是加载一个RSS提要并只选择一个节点,然后将其保存到XML文件中

以下是我从web提要加载的XML:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>Markets</title>
        <description/>
        <link>http://www.website.com</link>
        <language>en-us</language>
        <copyright>XML Output Copyright</copyright>
        <ttl>15</ttl>
        <pubDate>Tue, 16 Nov 2010 09:38:00 +0000</pubDate>
        <webMaster>admin@website.com</webMaster>
        <image>
            <title>title</title>
            <url>http://www.website.com/images/xmllogo.gif</url>
            <link>http://www.website.com</link>
            <width>144</width>
            <height>16</height>
        </image>


            <item>
                <title>title</title>
                <description>the description goes here
                </description>
                <enclosure url="http://www.website.com/images/image.png" type="image/png"/>

            </item>

    </channel>
</rss>

市场
http://www.website.com
美国英语
XML输出版权
15
2010年11月16日星期二09:38:00+0000
admin@website.com
标题
http://www.website.com/images/xmllogo.gif
http://www.website.com
144
16
标题
这里有描述
下面是我获取
节点并将其保存到feed.xml的拙劣尝试:

<?php  

    $feed = new DOMDocument();
    $feed->load('http://www.website.com/directory/directory/cz.c');
    $nodeValue = $feed->getElementsByTagName('description')->item(0)->nodeValue;
    $feed->save("feed.xml");

?>

因此,基本上我需要获取描述标记,并将其保存为XML文件


任何帮助都将不胜感激,提前感谢

几乎正确。要获取节点的“outerXml”,可以将节点传递到
saveXml()

使用
file\u put\u contents
保存时将不包含XML序言。请注意,在您的示例中,第一个description元素为空,因此文件将包含

如果要将节点提取为独立的XML文档,则必须实例化一个新的
DOMDocument
DOMNode
,然后使用
save()


尝试此操作

请澄清是要保存节点还是节点的值。在处理DOM树时,这些术语不能同义使用。
$feed = new DOMDocument();
$feed->load('http://www.website.com/directory/directory/cz.c');
$xml = $feed->saveXml($feed->getElementsByTagName('description')->item(0));
file_put_contents("feed.xml", $xml);
$dom = new DOMDocument($feed->xmlVersion, $feed->xmlEncoding);
$dom->appendChild(
    $dom->importNode(
        $feed->getElementsByTagName('description')->item(0),
        TRUE
    )
);
echo $dom->save('new.xml');
$feed = simplexml_load_file('feed.xml');
$descr=$feed->channel->description;