PHP SimpleXML 用方括号语法 $element['attrName'] 访问属性,返回 SimpleXMLElement 对象(可强转 string);遍历多元素需 foreach;访问前用 isset() 检查存在性;修改属性用 addAttribute(),不可直接赋值。
PHP SimpleXML 访问 XML 属性非常直接,核心是用 花括号语法($element['attributeName']),而不是箭头或点号。
SimpleXML 把属性当作元素的“关联数组”来处理。只要知道属性名,就能像访问数组一样获取它的值。
$xml->element['attrName']
... → $book['id'] 返回字符串 "101",$book['category'] 返回 "fiction"
(string)
如果 XML 中有多个相同标签(比如多个 ),先用 foreach 遍历,再在循环内取属性。
foreach ($xml->items->item as $item) { echo (string)$item['id']; }
(string) 也可能正常输出,但显式转换更稳妥,尤其做比较或拼接时直接读不存在的属性会发出 PHP Notice。推荐先用 isset() 判断。
if (isset($node['class'])) { echo $node['class']; }property_exists($node, 'class'),但 isset() 更常用、更轻量if ($node['class']) —— 空字符串或 "0" 会被当成 falseSimpleXML 默认不支持直接赋值改属性,必须用 addAttribu 替代(即使属性已存在)。
te()
$node->addAttribute('status', 'active'); —— 如果 status 已存在,就更新它$node['status'] = 'active',这会报错基本上就这些。记住关键:属性不是子元素,别用 ->attr;用 ['name'],配合 isset() 和 (string) 就很稳。