2012-03-22 49 views
0

私は2つのXMLファイルを持っています。まず最初に1つを取得してループし、最初のxmlファイルからIDを取得し、そのidに関連付けられた結果をエコーアウトします。 SQLでこれを行う場合、私は単にこれを行うだろう:xmlとphp特定の要素を持つタグ要素を取得して出力する

$query = (SELECT * FROM HotelSummary WHERE roomTypeCode = '$id') or die(); 
while($row=mysql_fetch_array($query)){ 
    $name = $row['Name']; 
} 
echo $name; 

私はこれを行うことができますか?

+0

ウェブページ(http://php.net/manual/en/class.domdocument.php)でjavascriptを使用するのと同様の方法で、XMLファイルとやりとりすることができます。 DOMDocumentオブジェクトはgetElementById()メソッドをサポートしています。 – CBusBus

答えて

1

SimpleXMLを使用して、ファイルのオブジェクト表現を作成します。その後、Simple XMLオブジェクトの要素をループすることができます。

2

DOMDocument documentationを読むことをお勧めします。 非常に重くて強力です(何が起きても必ずしも明確になるわけではありませんが、インターネットでは常にソリューションを提供しています)。

最初の文書を歩き、IDを見つけてXPath経由でDOMElementを探してください。テストファイルを以下に基づいて

<?php 
$dom = new DOMDocument(); 
$dom->load('1.xml'); 

foreach ($dom->getElementsByTagName('article') as $node) { 
    // your conditions to find out the id 
    $id = $node->getAttribute('id'); 
} 


$dom = new DOMDocument(); 
$dom->load('2.xml'); 

$xpath = new DOMXPath($dom); 
$element = $xpath->query("//*[@id='".$id."']")->item(0); 

// would echo "top_2" based on my example files 
echo $element->getAttribute('name'); 

:XMLファイルの形式によって

1.xml

<?xml version="1.0" encoding="UTF-8"?> 
<articles> 
    <article id="foo_1"> 
     <title>abc</title> 
    </article> 
    <article id="foo_2"> 
     <title>def</title> 
    </article> 
</articles> 

2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<tests> 
    <test id="foo_1" name="top_1"> 

    </test> 
    <test id="foo_2" name="top_2"> 

    </test> 
</tests> 
1

それを仮定します:

<xml> 
    <roomTypeCode> 
     <stuff>stuff</stuff> 
     <name>Skunkman</name> 
    </roomTypeCode> 
    <roomTypeCode> 
     <stuff>other stuff</stuff> 
     <name>Someone Else</name> 
    </roomTypeCode> 
</xml> 

それはこのようなものになるだろう:XMLファイルに接続

$xml = simplexml_load_file('xmlfile.xml'); 
for($i = 0; $i < count($xml->roomTypeCode); $i++) 
{ 
    if($xml->roomTypeCode[$i]->stuff == "stuff") 
    { 
     $name = $xml->roomTypeCode[$i]->name; 
    } 
} 

、内検索は「もの」の値のために、そこにあるどのように多くのroomTypeCodeエントリ見つけたとするとき、それはそれと一致しました正しく、あなたはそのXMLエントリと関係があるものにアクセスできます。

関連する問題