PHP从xml文件读取xml属性

PHP从xml文件读取xml属性,php,xml,Php,Xml,我有一个如下所示的XML文件: <?xml version="1.0" encoding="utf-8"?> <Barcodes> <Goods> <Good ID="1" Name="cc" TechnicalNumber="DN11060122D" SpecialGood="True" Desc="" /> <Good ID="2" Name="bb" TechnicalNumber="DN1106

我有一个如下所示的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<Barcodes>
    <Goods>
        <Good ID="1" Name="cc" TechnicalNumber="DN11060122D" SpecialGood="True" Desc="" />
        <Good ID="2" Name="bb" TechnicalNumber="DN11068384B" SpecialGood="True" Desc="" />
    </Goods>
</Barcodes>

我试图分别读取每个属性,但在输出中看不到任何内容

我的PHP:

 <?php

    $folder = "C:/wamp/upload/";        
    $path   = $folder . basename( $_FILES['file']['name']); 

    if(move_uploaded_file($_FILES['file']['tmp_name'], $path)) 
    {        
        $xml = simplexml_load_file("C:/wamp/upload/joomla.xml") 
               or die("Error: Cannot create object");

        foreach($xml->children() as $Goods)
        {
            foreach($Goods->children() as $Good => $data)
            {
                echo $data->ID;
                echo $data->Name;
                echo $data->TechnicalNumber;
                echo "<br />";
            }
        }
    } 
    else
    {
        echo "There was an error uploading the file, please try again!";
    }
children()作为$Goods)
{
foreach($Goods->children()作为$Good=>$data)
{
echo$data->ID;
echo$data->Name;
echo$数据->技术编号;
回声“
”; } } } 其他的 { echo“上传文件时出错,请重试!”; }

提前感谢。

您可以通过数组运算符访问属性:

foreach($Goods->children() as $Good => $data){
  echo $data['ID'];
  echo $data['Name'];
  echo $data['TechnicalNumber'];
  echo "<br />";
}
foreach($Goods->children()作为$Good=>$data){
echo$data['ID'];
echo$data['Name'];
echo$数据[‘技术编号’];
回声“
”; }
如果ziollek的回答没有多大意义

(这是完全正确的,但它表达了该对象行为的一些奇怪之处…)

您可以尝试以下方法:

  foreach($xml->children() as $Goods ){
    foreach($Goods->children() as $Good ){
      $GoodAttributes = $Good->attributes();
      echo $GoodAttributes['ID'];
      echo $GoodAttributes['Name'];
      echo $GoodAttributes['TechnicalNumber'];
      echo "<br />";
    }
  }
也就是说,
simplexmlement
有一个成员变量,该变量包含作为数组的属性

该类有一个重载的访问器,因此您可以引用这些属性,就像
simplexmlement
本身是一个数组一样。另外,还做了类似的事情,使子节点可用,就好像它们是公共成员变量一样

我总是对同样是数组行为的对象感到有点吃惊,我更喜欢使用方法
attributes()

这可能只是个人的爱好,我从来没有用
simplexml\u load\u file
制作过需要执行的任何东西,因此这种替代技术可能会带来一些我不知道的开销


我只是想让您知道这些选项…

您试图访问的是属性,而不是元素本身

 foreach($xml->children() as $Goods)
    {
        foreach($Goods->children() as $data)
        {
            echo $data->attributes()->ID;
            echo $data->attributes()->Name;
            echo $data->attributes()->TechnicalNumber;
            echo "<br />";
        }
    }
foreach($xml->children()作为$Goods)
{
foreach($Goods->children()作为$data)
{
echo$data->attributes()->ID;
echo$data->attributes()->Name;
echo$data->attributes()->TechnicalNumber;
回声“
”; } }
谢谢你的帮助:)谢谢:)你的解释对我很有帮助:)
 foreach($xml->children() as $Goods)
    {
        foreach($Goods->children() as $data)
        {
            echo $data->attributes()->ID;
            echo $data->attributes()->Name;
            echo $data->attributes()->TechnicalNumber;
            echo "<br />";
        }
    }