-1
<source>        
    <job>
    <title><![CDATA[newsTitle]]></title>
    <date><![CDATA[newsTo]]></date>
     .......

今、私は追加する必要があります

<publisher>abc</publisher>
<publisherurl>http://google.com</publisherurl>    

<source>タグの直後。以下のコードを試してみましたが、ソースタグの後に追加されています!

$doc = new DOMDocument();
$doc->load('C:\test.xml', LIBXML_NOBLANKS);    
$xpath = new DOMXPath($doc);
$hrefs = $xpath->evaluate("/source");
$href = $hrefs->item(0);   
$link = $doc->createElement("publisher","abc");
$href->appendChild($link);
$link = $doc->createElement("publisherurl","www.google.com");
$href->appendChild($link);

print $doc->save('C:\test.xml');

これらのノードをソースの直後に追加するにはどうすればよいですか?

4

3 に答える 3

2
<?php
$rssDoc = new DOMDocument();
$rss_file = 'C:\test.xml';
$rssDoc->load($rss_file);
$items = $rssDoc->getElementsByTagName('source');

$firstItem = $items->item(0);

$newItem[] = $rssDoc->createElement('lastBuildDate', 'Fri, 10 Dec 2008 22:49:39 GMT');
$newItem[] = $rssDoc->createElement('publisherurl', 'http://www.xyz.com');
$newItem[] = $rssDoc->createElement('publisher', 'XYZ');
foreach ($newItem as $xmlItem){
 $firstItem->insertBefore($xmlItem,$firstItem->firstChild);
} 

echo $rssDoc->save('C:\test.xml');
?>

ねえ、Manoj Kumar、これでうまくいくはずです。これを試して。:)

于 2013-07-12T06:58:16.917 に答える
1

最後に、解決策を見つけました。それでも少し疑問が残りますが、

$rssDoc = new DOMDocument();
$rss_file = 'C:\test.xml';
$rssDoc->load($rss_file);
$items = $rssDoc->getElementsByTagName('source');

$newItem = $rssDoc->createElement('lastBuildDate', 'Fri, 10 Dec 2008 22:49:39 GMT');
$rssDoc->appendChild($newItem);
$firstItem = $items->item(0);
$firstItem->insertBefore($newItem,$firstItem->firstChild);

$newItem = $rssDoc->createElement('publisherurl', 'http://google.com');
$rssDoc->appendChild($newItem);
$firstItem = $items->item(0);
$firstItem->insertBefore($newItem,$firstItem->firstChild);

$newItem = $rssDoc->createElement('publisher', 'newschannel');
$rssDoc->appendChild($newItem);
$firstItem = $items->item(0);
$firstItem->insertBefore($newItem,$firstItem->firstChild);

echo $rssDoc->saveXML();

これらの子を次々とループに追加し、同様に前に挿入することは可能ですか?

于 2013-07-11T15:22:56.743 に答える