복붙노트

간단한 XML - 노드에서 콜론 다루기

PHP

간단한 XML - 노드에서 콜론 다루기

Flickr에서 RSS 피드를 읽으려고하는데 Simple XML (미디어 : 썸네일, flickr : 프로필 등)에서 읽을 수없는 노드가 있습니다.

이것을 어떻게 얻을 수 있습니까? DOM 문서를 보면 머리가 아파요. 그래서 나는 배우고 싶지 않기 때문에 그것을 피하고 싶습니다.

나는 엄지 손톱을 얻으려고하고있다.

해결법

  1. ==============================

    1.해결책은이 좋은 기사에서 설명됩니다. 네임 스페이스가 포함 된 XML 요소에 액세스하려면 children () 메서드가 필요합니다. 이 코드는 기사에서 인용 한 것입니다.

    해결책은이 좋은 기사에서 설명됩니다. 네임 스페이스가 포함 된 XML 요소에 액세스하려면 children () 메서드가 필요합니다. 이 코드는 기사에서 인용 한 것입니다.

    $feed = simplexml_load_file('http://www.sitepoint.com/recent.rdf'); 
    foreach ($feed->item as $item) { 
        $ns_dc = $item->children('http://purl.org/dc/elements/1.1/'); 
        echo $ns_dc->date; 
    }
  2. ==============================

    2.네임 스페이스를 다루고 있습니까? 나는 당신이 -> children 메소드를 사용해야한다고 생각한다.

    네임 스페이스를 다루고 있습니까? 나는 당신이 -> children 메소드를 사용해야한다고 생각한다.

    $ns_dc = $item->children('http://namespace.org/');
    

    xml 선언으로 스 니펫을 제공 할 수 있습니까?

  3. ==============================

    3.최신 버전에서는 이제 대괄호로 콜론 노드를 참조 할 수 있습니다.

    최신 버전에서는 이제 대괄호로 콜론 노드를 참조 할 수 있습니다.

    $item->{'itunes:duration'}
    
  4. ==============================

    4.네임 스페이스를 선언하지 않고 네임 스페이스 XML 노드에 액세스하는 PHP를 사용하는 더 간단한 방법은 ....

    네임 스페이스를 선언하지 않고 네임 스페이스 XML 노드에 액세스하는 PHP를 사용하는 더 간단한 방법은 ....

    다음 소스에서 값을 가져 오려면

    <item>
      <title>My important article</title>
      <pubDate>Mon, 29 Feb 2017 00:00:00 +0000</pubDate>
      <link>https://myxmlsource.com/32984</link>
      <guid>https://myxmlsource.com/32984</guid>
      <author>Blogs, Jo</author>
      <su:departments>
        <su:department>Human Affairs</su:department>
      </su:departments>
      <su:authorHash>4f329b923419b3cb2c654d615e22588c</su:authorHash>
      <su:authorEmail>hIwW14tLc+4l/oo7agmRrcjwe531u+mO/3IG3xe5jMg=</su:authorEmail>
      <dc:identifier>/32984/Download/0032984-11042.docx</dc:identifier>
      <dc:format>Journal article</dc:format>
      <dc:creator>Blogs, Jo</dc:creator>
      <slash:comments>0</slash:comments>
    </item>
    

    다음 코드를 사용하십시오.

    $rss = new DOMDocument();
    
    $rss->load('https://myxmlsource.com/rss/xml');
    
    $nodes = $rss->getElementsByTagName('item');
    
    foreach ($nodes as $node) {
        $title = $node->getElementsByTagName('title')->item(0)->nodeValue;
        $author = $node->getElementsByTagName('author')->item(0)->nodeValue;
        $authorHash = $node->getElementsByTagName('authorHash')->item(0)->nodeValue;
        $department = $node->getElementsByTagName('department')->item(0)->nodeValue;
        $email = decryptEmail($node->getElementsByTagName('authorEmail')->item(0)->nodeValue);
    }
    
  5. from https://stackoverflow.com/questions/1186107/simple-xml-dealing-with-colons-in-nodes by cc-by-sa and MIT license