第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP RSS XML 再次解析、過濾和展示

PHP RSS XML 再次解析、過濾和展示

PHP
元芳怎么了 2023-05-26 17:52:11
我正在使用DOMDocument. 那很好用。我需要解析我的 XML,找到特定的值,然后只再次顯示某些節(jié)點(diǎn)。XML 看起來像這樣......<rss version="2.0">  <channel>  <title>Title</title>  <link></link>  <item>    <title>Title #1</title>    <description>Here I want to filter</description>  </item>  <item>    <title>Title #2</title>    <description>Should not be displayed</description>  </item></channel>我想在描述標(biāo)簽內(nèi)搜索,如果找到關(guān)鍵字我想顯示item. 如果找不到,我想刪除 parent item。到目前為止,這就是我嘗試過的...<?phpheader('Content-Type: text/xml');// Load our XML document$rss = new DOMDocument();$rss->load('https://myurl');$description = $rss->getElementsByTagName('description');foreach ($description as $node) {    $s = $node->nodeValue;    if (strpos($s, 'filter') !== false)    {      //found the keyword, nothing to delete    }    else    {      //didnt find it, now delete item      $node->parentNode->parentNode->removeChild($node->parentNode);    }}echo $description->saveXml();我正在嘗試獲取所有描述節(jié)點(diǎn),檢查它們是否包含字符串,如果不包含,則刪除父節(jié)點(diǎn)。搜索字符串有效,但刪除節(jié)點(diǎn)無效。如果我回顯我的 XML,則沒有任何改變。
查看完整描述

1 回答

?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個贊

getElementsByTagName()將返回“實(shí)時”結(jié)果。如果您修改文檔,它將發(fā)生變化。您可以用來iterator_to_array()制作穩(wěn)定的副本。


另一種選擇是使用 Xpath 表達(dá)式來獲取特定節(jié)點(diǎn)。


$document = new DOMDocument();

$document->loadXML($xmlString);

$xpath = new DOMXpath($document);


// fetch items that contain "filter" in their description

$items = $xpath->evaluate('/rss/channel/item[contains(description, "filter")]');

foreach ($items as $item) {

    // dump the title child element text content

    var_dump($xpath->evaluate('string(title)', $item));


// fetch items that do not contain "filter" in their description

$items = $xpath->evaluate('/rss/channel/item[not(contains(description, "filter"))]');

foreach ($items as $item) {

    // remove item element

    $item->parentNode->removeChild($item);

echo $document->saveXML();

輸出:


string(8) "Title #1"

<?xml version="1.0"?>

<rss version="2.0">

  <channel>

  <title>Title</title>

  <link/>

  <item>

    <title>Title #1</title>

    <description>Here I want to filter</description>

  </item>


</channel>

</rss>


查看完整回答
反對 回復(fù) 2023-05-26
  • 1 回答
  • 0 關(guān)注
  • 209 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號