当前位置: 首页 > 知识库问答 >
问题:

从SimpleXMLElement对象提取节点和属性

耿玄裳
2023-03-14

我将xml字符串转换成一个simpleXMLElement对象使用simplexml_load_string其值print_r输出

SimpleXMLElement Object ( [message] => SimpleXMLElement Object ( [@attributes] => Array 
                  ( [to] => Danny [type] => greeting [id] => msg1 ) 
                  [body] => To be or not to be! ) [status] => SimpleXMLElement Object ( [@attributes] => Array ( [time] => 2015-01-12 ) [0] => SimpleXMLElement Object ( [@attributes] => Array ( [count] => 0 ) ) ))

如何从这个对象中提取节点和属性值?使用

echo $xml->body 

要获取正文的内容,节点未输出任何值

更新:

XML字符串

 <start>
  <message to="Danny" type="greeting" id="msg1 ">
    <body>
     To be or not to be!
    </body>
  </message>
  <status time="2015-01-12">
   <offline count="0"></offline>
  </status>
 </start>

是否同时提取节点值和属性

共有3个答案

赫连照
2023-03-14

查找SimpleXMLElement留档php.net:http://php.net/manual/en/class.simplexmlelement.php

该类有一个方法列表,其中一个是attributes,它返回所有元素属性:http://php.net/manual/en/simplexmlelement.attributes.php

我相信了解一下SimpleXML的基本用法也会有所帮助:http://php.net/manual/en/simplexml.examples-basic.php

陆星文
2023-03-14
foreach($xml->body[0]->attributes() as $a => $b)
  {
  echo $a,'="',$b,"<br>";
  }

PHP attributes()函数

萧麒
2023-03-14

假设$string包含问题中的xml字符串

获取单个xml节点的值

$xml = simplexml_load_string($string);
print $xml->message->body;

将输出

To be or not to be!

从特定节点获取特定属性的步骤

print $xml->message->attributes()->{'type'};

将输出

greeting
 类似资料:
  • 在响应中,我们接收一个xml文件,然后转换为SimpleXMLElement,然后根据需要访问元素和属性。然而,当直接从字符串响应加载xml而不是从保存的响应加载xml时,我们得到了“尝试获取非对象的属性”。 当使用simplexml\u load\u字符串而不是simplexml\u load\u文件时,什么会导致xml失败? 以下是xml文件的一个片段:

  • 对于下面的XML,我正在尝试根据属性和节点值提取节点。 基于属性class=pass和h1包含('objectives'),我试图提取以下输出。 “目标”是节点值字符串“1任务目标”的一部分 1任务目标1目标2 下面是我正在尝试的XPath表达式。然而,这并没有产生任何输出。你能指出我做错了什么吗? 谢谢

  • 我有一个包含如下值的对象 这些都在变量autossuggest中。现在我只想获得值 谢谢你的小费

  • 我使用Mapstruct(1.2.0.final)来映射dto对象,我希望将对象的属性提取到它自己的对象实例。 如何做到这一点?或者有没有更方便的方法来去掉只有一个属性的(无用的)对象? 提前谢了。

  • 问题内容: 我想将Linux节点设置为Jenkins主服务器的从服务器。我正在阅读有关为Linux机器进行设置的教程。 通过SSH拥有主启动从属代理 Jenkins具有内置的SSH客户端实现,可用于与远程sshd对话并启动从属代理。这是Unix从属服务器最方便,首选的方法,该方法通常具有现成的sshd。单击管理Jenkins,然后单击管理节点,然后单击“新节点”。在此设置中,您将提供连接信息(从属

  • 我试图将一些数字表示为具有连通分支的图的边。为此,我一直在使用python的networkX模块。 我的图是G,节点和边初始化如下: 一旦我添加以下行, 我得到了上面提到的错误。如果可能有用的话,所有节点都以9-15位数字进行编号。共有412个节点和422条边。 详细错误: 编辑:解决如下问题。有用信息:pos创建一个dict,其中包含每个节点的坐标。正在执行nx。draw(G,pos)创建pyl