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

使用simplexml\u load\u string()转换一个节点的XML文件

伊温书
2023-03-14

我有简单的xml文件,有一个或多个节点,例如:

<?xml version='1.0' standalone='yes'?>
<nodes>
 <node>
  <value>Val1</value>
 </node> 
</nodes>

有没有可能,使用simplexml_load_string()函数,对于一个节点的文件(如上所述)得到:

SimpleXMLElement Object
(
    [node] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [value] => Val1
                )
        )
)

使用[0]键,与具有更多节点的xml文件类似,而不是:

SimpleXMLElement Object
(
    [node] => SimpleXMLElement Object
        (
            [value] => Val1
        )
)

因为接下来我需要将它转换为具有相同深度的数组,无论是来自具有一个或多个节点的文件

共有1个答案

越信鸥
2023-03-14

SimpleXML已经做了您想要做的事情-两者之间的区别仅在于print\r的输出,它显示了访问元素的最简洁的方式,而不是唯一的方式。

具体来说,$xml-

这就是为什么“盲目”将XML结构转换为PHP数组通常是个坏主意——相反,使用Foreach循环和属性访问来提取您需要的任何信息。

您可以使用以下代码自己尝试:

// Single node
$xml1 = <<<XML
<?xml version='1.0' standalone='yes'?>
<nodes>
 <node>
  <value>Val1</value>
 </node> 
</nodes>
XML;

$sx1 = simplexml_load_string($xml1);
print_r($sx1); // misleading!
echo $sx1->node->value, PHP_EOL;
echo $sx1->node->value[0], PHP_EOL;
echo $sx1->node[0]->value[0], PHP_EOL;
echo $sx1->node[0]->value, PHP_EOL;
foreach ( $sx1->node as $node ) {
   echo $node->value, PHP_EOL;
}

// Two nodes with same name
$xml2 = <<<XML
<?xml version='1.0' standalone='yes'?>
<nodes>
 <node>
  <value>Val1</value>
 </node> 
 <node>
  <value>Val2</value>
 </node> 
</nodes>
XML;

$sx2 = simplexml_load_string($xml2);
print_r($sx2); // misleading!
echo $sx2->node->value, PHP_EOL;
echo $sx2->node[0]->value, PHP_EOL;
echo $sx2->node[0]->value[0], PHP_EOL;
echo $sx2->node->value[0], PHP_EOL;
foreach ( $sx2->node as $node ) {
   echo $node->value, PHP_EOL;
}

 类似资料:
  • 我有一个XML文件: 我想使用XSLT将其转换为have: 我的文件: 但是我的输出文件中没有根节点。如何做到这一点? 还有,这是一个好的方法来进行转换吗?堆叠几个模板?

  • 所以我有一个如下的xml文件: 并有另一个xml文件,如下所示: 使用xslt,如何将第二个文件中的两个元素添加到第一个文件中的student元素中?换句话说,如何创建如下所示的文件: 如果使用xslt是不可能的,那么使用XPath是可行的吗? 非常感谢!

  • “n”表示标记名称的名称,“v”表示标记的值 我应该在XSLT中指定什么?

  • 您能帮助如何用子节点分割成半节点吗? 输入: 输出: 不幸的是,我对xslt没有经验,也没有找到这样的例子。 更新后,我尝试了下面建议的方法之一,并有这个https://xsltfiddle.liberty-development.net/jyH9rNq/3节点不复制 xslt: 输出:

  • 问题内容: 如何使用simpleXML在xml文件中编辑值? 我知道如何创建文件,但不知道如何编辑现有文件中的值? 问题答案: 确保可以使用SimpleXML进行编辑: 看一下例子。

  • 主要内容:什么是 PHP SimpleXML?,安装,PHP SimpleXML 实例,实例 1,实例 2,实例 3,更多 PHP SimpleXML 的信息PHP SimpleXML 处理最普通的 XML 任务,其余的任务则交由其它扩展处理。 什么是 PHP SimpleXML? SimpleXML 是 PHP 5 中的新特性。 SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。 与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XM