使用用户定义的字段/值解析xml文件

时间:2014-05-27 12:55:31

标签: php xml-parsing

我试图解析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 =&#34; Immobilie des Monats&#34;&#39;和&#39; feldname =&#34; Energie&#34;&#39;。但我怎样才能获得&#34; Immobilie des Monats&#34;?

的价值

感谢您的帮助。

此致 托马斯

2 个答案:

答案 0 :(得分:0)

如果要使用该特定属性访问该值,则只需使用该属性即可。使用针(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

答案 1 :(得分:0)

在我看来,你只是看着属性:

foreach($simplefield->attributes()

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

foreach($simplefield->nodeValue

希望有所帮助,

麦克