【问题标题】:parse an xml file with user defined fields/values使用用户定义的字段/值解析 xml 文件
【发布时间】:2014-05-27 12:55:31
【问题描述】:

我正在尝试解析一个 xml 文件。具有以下结构:

 <verwaltung_objekt>
 <objektadresse_freigeben>false</objektadresse_freigeben>
    <geschlecht />
    <user_defined_simplefield feldname="Immobilie des Monats">Ja</user_defined_simplefield>
            <user_defined_simplefield feldname="Energie">A</user_defined_simplefield>
</verwaltung_objekt>

并尝试使用此代码:

 foreach($xml -> verwaltung_objekt -> user_defined_simplefield as $simplefield) {
foreach($simplefield->attributes() as $a => $b) {
    echo $a,'="',$b,"\"\n";
    }
}

这让我得到了 'feldname="Immobilie des Monats"' 和 'feldname="Energie"'。但是我怎样才能获得“Immobilie des Monats”的价值呢?

感谢您的帮助。

问候 托马斯

【问题讨论】:

    标签: php xml-parsing


    【解决方案1】:

    如果您想通过使用该特定属性来访问该值,您可以使用该属性。用针(Immobilie des Monats),你可以比较一下。考虑这个例子:

    $raw = '<verwaltung_objekt> <objektadresse_freigeben>false</objektadresse_freigeben> <geschlecht /> <user_defined_simplefield feldname="Immobilie des Monats">Ja</user_defined_simplefield> <user_defined_simplefield feldname="Energie">A</user_defined_simplefield></verwaltung_objekt>';
    
    $xml = simplexml_load_string($raw);
    $data = array();
    foreach($xml as $key => $value) {
        if($value->attributes()['feldname'] == 'Immobilie des Monats') {
            echo $value;
        }
    }
    
    // outputs: Ja
    

    【讨论】:

      【解决方案2】:

      在我看来,你只看属性:

      foreach($simplefield->attributes()
      

      所以你需要查看节点值,所以无论你使用什么解析器,我都会查看节点值而不是它的属性:

      foreach($simplefield->nodeValue
      

      希望对你有帮助,

      迈克。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-27
        • 1970-01-01
        • 2015-11-14
        • 1970-01-01
        相关资源
        最近更新 更多