-2

次の形式の XML ファイルがあります。

<EticketCanStatusRes>
        <ETicket>
          <eticketno>asdf4511</eticketno>
          <flightuid>57490</flightuid>
          <passuid>91832</passuid>
          <PnrNumber>AADS12</PnrNumber>
          <Origin>COK</Origin>
          <Destination>DEL</Destination>
        </ETicket>
         <ETicket>
          <eticketno>asdf4511</eticketno>
          <flightuid>57490</flightuid>
          <passuid>91832</passuid>
          <PnrNumber>AADS12</PnrNumber>
          <Origin>COK</Origin>
          <Destination>DEL</Destination>
        </ETicket>
</EticketCanStatusRes>';

<ETicket>要素がいくつあるかを調べる必要があります。私の例では2つあります。

4

3 に答える 3

0

simplexmlxpathを使用できます:

$string = '<EticketCanStatusRes>
        <ETicket>
          <eticketno>asdf4511</eticketno>
          <flightuid>57490</flightuid>
          <passuid>91832</passuid>
          <PnrNumber>AADS12</PnrNumber>
          <Origin>COK</Origin>
          <Destination>DEL</Destination>
        </ETicket>
         <ETicket>
          <eticketno>asdf4511</eticketno>
          <flightuid>57490</flightuid>
          <passuid>91832</passuid>
          <PnrNumber>AADS12</PnrNumber>
          <Origin>COK</Origin>
          <Destination>DEL</Destination>
        </ETicket>
</EticketCanStatusRes>';

$xml = new SimpleXMLElement($string);
$result = $xml->xpath('//ETicket');
echo count($result); // 2
于 2012-08-10T11:15:16.423 に答える
0

相対的な制限なしに 1 つのタイプのノードのみに関する統計が必要な場合は、「長さ」読み取り専用属性を持つ DOMCollection を返すため、DOM::getElementsByTagName で十分です。

$document = new DOMDocument;
$document->load("your file.xml");
echo $document->getElementsByTagName('tagname')->length;

さらに制限を加えたい場合は、@Arkh が言ったように SimpleXML で XPath を使用するか、DOMDocument で使用できます。

于 2012-08-10T11:20:39.563 に答える
0

xmlファイルとphpファイルを同じディレクトリに取ったので、コードはこんな感じ

     <?php
$dom = new DOMDocument;
// load the XML string defined above
$dom->load('tiket.xml');


$etickets = $dom->getElementsByTagName('ETicket');
$count = 0;

foreach ($etickets as $etiket) {
    $count++;
}

echo $count;
?>
于 2012-08-10T11:51:57.063 に答える