Сортировка данных XML в PHP4 - PullRequest
1 голос
/ 19 ноября 2009

Привет, у меня есть следующий 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, отображаются только строки, в которых идентификатор первого столбца также равен BBB.

Таким образом, результат будет:

BBB - 243515 - 090831-000116 - Тема BBB - 244913 - 090905-000022 - Тема

, а остальные строки просто игнорируются.

Если задана переменная AAA, результат будет:

AAA - 243168 - 090828-000300 - Тема

Вы поняли:)

Если вы можете помочь, это было бы здорово. Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 19 ноября 2009

вы должны использовать 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']")
);
0 голосов
/ 19 ноября 2009

Вы можете посмотреть на XSL-T как на свое решение. Достаточно просто выбрать нужные узлы и преобразовать результаты.

...