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

PHP xml解析器simplexml_load_string

谷梁驰
2023-03-14

simplexml_load_string()似乎不是以下xml的工作形式

 "<?xml version="1.0" encoding="UTF-8"?>
<Chat_vailable queue="IBIN" locale="gn">Hide</Chat_vailable>"

$result = simplexml_load_string($response->data)

[@attributes]
  queue -> IBIN
  locale->gn

上面的xml是响应的一部分,因此当得到结果时,它只包含属性

结果是SimpleXMLElement的一个对象,只有一个属性数组

它没有任何与“Chat_valiable”或隐藏相关的内容。

能找个人帮忙吗

共有3个答案

艾才良
2023-03-14
$xml = simplexml_load_string($x); // assume XML in $x
echo "queue: $xml[queue], locaele: $xml[locale], value: $xml";

将输出:

queue: IBIN, locaele: gn, value: Hide

看到它工作:https://eval.in/39965

丁德义
2023-03-14

$result上执行var\u dump将产生此结果。因此,它确实获得了属性和内容。

object(SimpleXMLElement)#1 (2) {
  ["@attributes"]=>
  array(2) {
    ["queue"]=>
    string(4) "IBIN"
    ["locale"]=>
    string(2) "gn"
  }
  [0]=>
  string(4) "Hide"
}

产生上述输出的代码如下

$xml = <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<Chat_vailable queue="IBIN" locale="gn">Hide</Chat_vailable>
EOF;

$result = simplexml_load_string($xml);

var_dump($result);
嵇丰
2023-03-14

我不确定你用什么来检查那里的物体,我猜是print\r,但不管是什么,都不要依赖它。:)

SimpleXML不会为XML文档中的所有内容创建一个具有属性的真正的PHP对象,它提供了一个与内部解析表示相链接的类对象API。

因此,在你的情况下:

  • Chat_vailable是根节点,因此由$结果本身表示(SimpleXML没有单独的文档对象,因此根元素上方没有任何内容)
  • Hide是该节点的文本内容,因此可以通过字符串转换来访问:(string)$结果(或者只是echo$结果,因为它会自动转换为字符串)
  • 属性队列语言环境可以使用数组表示法访问(转换为字符串是一个好习惯,以避免传递对象,这可能会混淆以后的函数):(string)$结果['队列'](string)$结果['locale']

如果要检查通过SimpleXML对象可用的全部内容,请查看这些专用的SimpleXML调试函数。

 类似资料:
  • 主要内容:解析 XML 文档,解析 XML 字符串,跨域访问,XML DOM所有现代浏览器都有内建的 XML 解析器。 XML 解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象。 解析 XML 文档 下面的代码片段把 XML 文档解析到 XML DOM 对象中: if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlht

  • 问题内容: 我有一个类似这样的响应XML- 我想从中提取全部内容到一个字符串中。是否可以通过任何字符串函数或XML解析器来做到这一点? 请指教。 问题答案: 您可以尝试使用XPath方法简化XML解析: 请注意,我没有尝试过此代码。它可能需要调整。

  • CSS 选择器:BeautifulSoup4 和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。 lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml。 BeautifulSoup 用来解析 HT

  • 简单的例子 这个例子展示了如何从字符串中加载 CSS 样式: #include <LCUI.h> #include <LCUI/gui/css_library.h> #include <LCUI/gui/css_parser.h> ​ int main(void) { LCUI_Selector selector = Selector(".button"); LCUI_Style

  • 主要内容:Java DOM4J解析器 解析XML文档的步骤,Java DOM4J解析器 解析XML文档的示例Java DOM4J解析器 解析XML文档的步骤 以下是使用 DOM4J Parser 解析文档时使用的步骤。 导入与 XML 相关的包。 创建一个 SAXReader。 从文件或流创建文档。 通过调用 document.selectNodes() 使用 XPath 表达式获取所需的节点 提取根元素。 迭代节点列表。 检查属性。 检查子元素。 导入 XML 相关的包 创建一个文档生成器 从

  • 主要内容:Java XPath解析器 解析XML文档的步骤,Java XPath解析器 解析XML文档的示例Java XPath解析器 解析XML文档的步骤 以下是使用 XPath Parser 解析文档时使用的步骤。 导入与 XML 相关的包。 创建一个文档生成器。 从文件或流创建文档。 创建一个 Xpath 对象和一个 XPath 路径表达式。 使用XPath.compile()编译 XPath 表达式,并通过XPath.evaluate()评估编译的表达式来获取节点列表。 迭代节点列表。