1

こんにちは、次の XML コードがあります。

<?xml version="1.0" encoding="UTF-8"?>
<connector_ret>
   <function name="search">
     <row id="1">
         <col id="1">AAA</col>
         <col id="2">243168</col>
         <col id="3">090828-000300</col>
         <col id="4">Subject</col>
     </row>
     <row id="2">
         <col id="1">BBB</col>
         <col id="2">243515</col>
         <col id="3">090831-000116</col>
         <col id="4">Subject</col>
     </row>
     <row id="3">
         <col id="1">BBB</col>
         <col id="2">244913</col>
         <col id="3">090905-000022</col>
         <col id="4">Subject</col>
     </row>
     <row id="4">
         <col id="1">CCC</col>
         <col id="2">245323</col>
         <col id="3">090907-000253</col>
         <col id="4">Subject</col>
     </row>
     <row id="5">
         <col id="1">CCC</col>
         <col id="2">245323</col>
         <col id="3">090907-000253</col>
         <col id="4">Subject</col>
     </row>
   </function>
</connector_ret>

PHP4でこれをループして、変数が指定されたときに特定の行のみを表示できるかどうか疑問に思っていました。

たとえば、指定された変数が BBB の場合、最初の列 ID も BBB に等しい行のみを表示します。

したがって、出力は次のようになります。

BBB - 243515 - 090831-000116 - 件名 BBB - 244913 - 090905-000022 - 件名

他の行は単に無視されます。

指定された変数が AAA の場合、出力は次のようになります。

AAA - 243168 - 090828-000300 - 件名

あなたはアイデアを得る:)

あなたが助けることができれば、それは素晴らしいことです. 本当にありがとう。

4

2 に答える 2

2

xpathそのような処理を行うために使用する必要があります

$dom    =domxml_open_mem($xml); 
$calcX = &$dom->xpath_new_context();
$xml_parsed["match"]= node_content(
   $calcX->xpath_eval("//row/col[@id=1][text()='BBB']")
);
于 2009-11-19T07:45:16.550 に答える
0

これに対する解決策として XSL-T を検討するかもしれません。必要なノードを選択して結果を変換するのは簡単です。

于 2009-11-19T07:41:28.823 に答える