Php SimpleXML提取ID子项的文本

Php SimpleXML提取ID子项的文本,php,simplexml,telegram-bot,Php,Simplexml,Telegram Bot,我需要这个xml文件的文本来在电报中使用它,如果xml没有id和名称,我可以这样做,但没有标记 ... 我想要这个文本。 在xml中是“zone”,但在php中是“zona”。 您不需要在数组键中添加id和name属性,只需输入标记名即可 $info = "information: ".$array['trend']['zone']['subzone']['text']; 您不必将SimpleXML对象转换为数组来访问其中的值,只需像对象变量一样访问它们: $xml = simplexml_

我需要这个xml文件的文本来在电报中使用它,如果xml没有id和名称,我可以这样做,但没有标记

... 我想要这个文本。
在xml中是“zone”,但在php中是“zona”。 您不需要在数组键中添加id和name属性,只需输入标记名即可

$info = "information: ".$array['trend']['zone']['subzone']['text'];

您不必将SimpleXML对象转换为数组来访问其中的值,只需像对象变量一样访问它们:

$xml = simplexml_load_string($xmlstring, "SimpleXMLElement", LIBXML_NOCDATA);
echo $xml->trend->zone->subzone->text;
输出:

I want this text.
您可以使用XPath查询所需的确切节点:

$xml = simplexml_load_string($xmlstring);
$nodes = $xml->xpath("/root/trend/zone[@id = 809 and @name= 'AGi']/subzone[@id = 809 and @name = 'AGi']/text") ;
$text = (string)$nodes[0] ;
echo $text ; // I want this text.

你试着输出$array并查看它的结构了吗?试着不要使用那种奇怪的json_decodejson_encode hack。发短信时出错,没有id和name标签也不行,有更多的分区和子分区有不同的id和名称。她给我错误T_PAAMAYIM_NEKUDOTAYIM$info=$xml->trend->zone->subzone->text;您也不需要LIBXML_NOCDATA,但除此之外,这是正确的。@ILB该错误是对代码中意外::的引用;由于此答案中的代码中没有::,该错误与此代码无关。@IMSoP加载行是从OPs代码复制的,因此为LIBXML_NOCDATA;我认为它是XML中其他一些没有显示的部分所必需的。@Nick不,这是每个人都在不理解的情况下从彼此的示例中复制的东西。即使有CDATA部分,唯一的区别是它稍微重新格式化了输出,并且更可能在调试输出中显示内容。人们把它误认为是make CDATA work标志,这是胡说八道。strip\u标签在那里干什么?字符串$nodes[0]将为您提供所需的文本内容,没有可剥离的标记。此外,您不需要LIBXML\u NOCDATA,只需要$xml=simplexml\u load\u string$xmlstring;可以。@IMSoP正确,不需要带标签。下面是代码运行的演示:@ILB如果这解决了您的问题,您应该将其标记为已接受。看,我认为你已经正确地理解了OPs问题的字里行间,这是获得他们想要的结果的正确方法。