0

私はこのようなXMLを持っています:

<properties>
  <property>name</property><value>john</value>
  <property>surname</property><value>wayne</value>
  <property>age</property><value>33</value>
  <property>blaaa</property><value>blaa</value>
</properties>

これを解析する必要があり、次のようなものを使用しました。

$xle = simplexml_load_file('xml.xml');
foreach ($xle->properties as $properties) {
    foreach ($properties->property as $property) {
        echo $property, "<br />\n";
    }
    foreach ($properties->value as $value) {
        echo $value, "<br />\n";
    }
}

私はこれまでにこれに来ました、私は次のようなものが必要です

"プロパティ=値""名前=ジョン"

私のコードは次のようなものを出力します:

name
surname
age
blaa
john
wayne
33
blaa
4

2 に答える 2

2

各値は、プロパティ要素の次の兄弟です。これは、xpathを使用して非常に簡単に表現できます。

following-sibling::value[1]

要素がコンテキストノードの<value>場合、要素を提供します。<property>

SimpleXMLを使用してコンテキストノードを取得するのはかなり簡単なので、PHPコードの例を次に示します。

$properties = simplexml_load_file('xml.xml');

foreach($properties->property as $property)
{
    list($value) = $property->xpath('following-sibling::value[1]');
    echo $property, " = ", $value, "\n";
}

次に、サンプルXMLの出力は次のようになります。

name = john
surname = wayne
age = 33
blaaa = blaa

オンラインデモ

これは、メモリから関連するQ&Aを知っているプロパティファイル(plist)に似ているので、あなたにとっても興味深いかもしれません。

于 2013-03-12T21:47:19.940 に答える
1

私は同意します、奇妙なフォーマットですが、有効です。<property>すべての後にそのが続くことを考えると<value>、行きます...

$xml = simplexml_load_file('xmlfile.xml');

$prop = $xml->xpath('//property');
$value = $xml->xpath('//value');

$count=count($prop)-1;

for ($i=0;$i<=$count;$i++) {
    echo $prop[$i].": ".$value[$i]."<br />";;
}  

--->ライブデモ:http://3v4l.org/0CS73

于 2013-03-12T21:31:04.987 に答える