1

私はphpに少し慣れていないので、データを抽出してHTMLで表示するために、XMLファイルをループしようとしています。HTML部分に表示する方法は知っていますが、XML部分をどうするかについて少し混乱しています。

これが私がやろうとしていることのサンプルファイルです(groupTypeがジャンルになる映画の分類されたリストとしてそれを描くことができます):

<mainGroup>

    <groupHeading type="heading">This is a sample heading</groupHeading>
    <group type="groupType1">
      <title>Title1</title>
      <date when="0001"></date>
    </group>

    <group type="groupType1">
      <title>Title2</title>
      <date when="0002"></date>
    </group>

    <group type="groupType2">
      <title>Title3</title>
      <date when="0003"></date>
    </group>

</mainGroup>
... There are more mainGroups with differet group types etc

基本的に、10以上のmainGroupがあり、その中に多くの異なるグループがあるので、phpを使用してこれらをループする方法が必要です。主な問題は、「getElementBy Type()」が必要なことですが、それは存在しません。

何か紛らわしいことがあれば、もっと詳しく説明することができます。私はまだphpの初心者なので、これができることを願っています。

4

2 に答える 2

1

本当に簡単 --> PHP を使用simplexml ---> ライブデモ: http://codepad.viper-7.com/i4MRGI

$xmlstr = '<mainGroup>
<groupHeading type="heading">This is a sample heading</groupHeading>
    <group type="groupType1">
        <title>Title1</title>
        <date when="0001"></date>
    </group>
    <group type="groupType1">
        <title>Title2</title>
        <date when="0002"></date>
    </group>
    <group type="groupType2">
        <title>Title3</title>
        <date when="0003"></date>
    </group>
</mainGroup>';

// create simplexml object
$xml=simplexml_load_string($xmlstr);

// loop through all <groupheading>, we use an xpath-query...
foreach ($xml->xpath("//groupHeading") as $gh) {

    echo($gh),'<br />';

} 

// now the titles under every group with groupType1...

foreach ($xml->xpath("//group[@type='groupType1']/title") as $gt1) {

echo $gt1,'<br />';
}

編集: 各 groupHeading のタイトルをエコーし​​、次に grouptype=1 の場合は子ノードのタイトル: ---> 新しいデモを参照: http://codepad.viper-7.com/eMuyr5

foreach ($xml->groupHeading as $gh) {

    echo($gh),'<br />';

    foreach ($gh->xpath("//group[@type='groupType1']/title") as $gt1) {

      echo $gt1,'<br />';

   }
} 
于 2013-03-16T02:13:00.797 に答える