为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 输出 SimpleXMLElement

PHP 输出 SimpleXMLElement

PHP
守着星空守着你 2023-07-01 15:20:48
我正在尝试读取 .php 中的 SimpleXMLElement 以补充搜索功能。我通过请求从一个名为 openthesaurus.de 的德语同义词 API 获取 XML file_get_contents。然后,我将收到的元素转换为 SimpleXMLElement 并尝试读取每个元素的属性term。(我知道下面的代码只关注synset['0'])。这样做是为了保持简单。我的 .php 看起来像这样            $url = "https://www.openthesaurus.de/synonyme/search?q=". $keyword. "&format=text/xml";            $options = array('http' =>                array(                    'method'  => 'POST',                    'header'  => 'user_agent: my-site.xyz',                )            );            $context = stream_context_create($options);            $recive = file_get_contents($url, false, $context);            if (($recieve = file_get_contents($url))===false){                echo "Error fetching XML\n";            } else {                libxml_use_internal_errors(true);                $syn = new SimpleXMLElement($recieve);                if (!$syn) {                   echo "Error loading XML\n";                    foreach(libxml_get_errors() as $error) {                        echo "\t", $error->message;                    }                } else {                    echo "content: <br>";                    foreach($syn->synset[0]->term as $value){                        echo $value. "<br>";                    }                }            }xml 看起来像这样:<matches>    <metaData>        <apiVersion content="0.1.3"/>        <warning content="WARNING -- this XML format may be extended without warning"/>        <copyright content="Copyright (C) 2019 Daniel Naber (www.danielnaber.de)"/>        <license content="Creative Commons Attribution-ShareAlike 4.0 or GNU LESSER GENERAL PUBLIC LICENSE Version 2.1"/>        <source content="https://www.openthesaurus.de"/>        <date content="Sat Jun 27 09:48:33 CEST 2020"/>    </metaData>不幸的是,除了中断之外,.php 没有输出任何内容。我也尝试过通过 print_r 输出,但这也没有帮助。但是 if 条件表明empty($value)该条件$value不为空。
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

SimpleXMLElement我和这个家庭的任何人都不熟悉SimpleXML,但如果你改变以下内容


foreach($syn->synset[0]->term as $value){

    echo $value. "<br>";

}


foreach( $syn->synset as $obj ){

    foreach( $obj->term as $arr ){

        foreach( $arr->attributes() as $attr => $value ) echo $attr . ' ' . $value .'<br />';

    }

}

或者,更全面地说:


<?php



    $keyword='kopf'; # for example...


    

    $url = "https://www.openthesaurus.de/synonyme/search?q=". $keyword. "&format=text/xml";

    $options = array('http' =>

        array(

            'method'  => 'POST',

            'header'  => 'user_agent: my-site.xyz',

        )

    );

    $context = stream_context_create( $options );

    $recive = file_get_contents( $url, false, $context );

    

    

    

    if( ( $recieve = file_get_contents( $url ) )===false ){

        echo "Error fetching XML\n";

    } else {

    

        libxml_use_internal_errors(true);

        $syn = new SimpleXMLElement( $recieve );

        

        if (!$syn) {

            echo "Error loading XML\n";

            foreach(libxml_get_errors() as $error) {

                echo "\t", $error->message;

            }

        } else {

            foreach( $syn->synset as $obj ){

                foreach( $obj->term as $arr ){

                    foreach( $arr->attributes() as $attr => $value ) echo $attr . ' ' . $value .'<br />';

                }

            }

        }

    }

?>

您应该得到一些更有意义的输出,例如:


term Haupt

term Kopf

term Caput

level fachsprachlich

term Ballon

level umgangssprachlich

term Birne

level umgangssprachlich

term Denkapparat

level umgangssprachlich

term Denkzentrum

level umgangssprachlich

term Dez

level umgangssprachlich

term Kopp

level umgangssprachlich

term Murmel

level umgangssprachlich

term Nischel

level umgangssprachlich

term Nuss

level umgangssprachlich

term Omme

level umgangssprachlich

term Rübe

level umgangssprachlich

term Schädel

level umgangssprachlich

term Anführer

term Führer

term Häuptling

term Hauptmann

term (führender) Kopf

term Leiter

term Oberhaupt

term Capo (einer Ultra-Gruppe)

level fachsprachlich

term Chef

level umgangssprachlich



查看完整回答
反对 回复 2023-07-01
  • 1 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信