如何从PHP中的XML文件中获取属性的值?

Mat*_*att 19 php xml simplexml

对不起,如果这看起来像一个简单的问题,但我已经开始在这个...

我有一个XML文件,看起来像这样......

<VAR VarNum="90">
  <option>1</option>
</VAR>
Run Code Online (Sandbox Code Playgroud)

我想要获得VarNum.

到目前为止,我已成功使用以下代码获取其他信息:

$xml=simplexml_load_file($file);
$option=$xml->option;
Run Code Online (Sandbox Code Playgroud)

我只是不能得到VarNum(我认为属性值?)

谢谢!

zom*_*bat 24

你应该能够使用SimpleXMLElement :: attributes()来获得这个

试试这个:

$xml=simplexml_load_file($file);
foreach($xml->Var[0]->attributes() as $a => $b) {
    echo $a,'="',$b,"\"\n";
}
Run Code Online (Sandbox Code Playgroud)

这将显示第一个foo元素的所有名称/值属性.它是一个关联数组,所以你也可以这样做:

$attr = $xml->Var[0]->attributes();
echo $attr['VarNum'];
Run Code Online (Sandbox Code Playgroud)


Pas*_*TIN 14

怎么用$xml['VarNum']

像这样 :

$str = <<<XML
<VAR VarNum="90">
  <option>1</option>
</VAR>
XML;

$xml=simplexml_load_string($str);
$option=$xml->option;

var_dump((string)$xml['VarNum']);
Run Code Online (Sandbox Code Playgroud)

(我之所以使用,simplexml_load_string是因为我已将XML粘贴到字符串中,而不是创建文件; simplexml_load_file在您的情况下,您正在使用的内容很好!)

会得到你

string '90' (length=2)
Run Code Online (Sandbox Code Playgroud)

使用simpleXML,您可以使用数组语法访问属性.
并且你必须转换为字符串来获取值,而不是和实例SimpleXMLElement

例如,请参阅手册中基本用法的示例#5 :-)

  • 注意:示例中的转换为(字符串). (5认同)
  • 在访问节点的属性时,强制转换为字符串非常重要.当我们未能包含演员时,我们看到了一些时髦的行为(空值). (2认同)