Domxml Xpath, можно ли получить атрибут по значению (php5)?

medwoodu

Новичок
Domxml Xpath, можно ли получить атрибут по значению (php5)?

проблема такая: есть DOM документ вида:
<p attrib1 = "1" attrib2 = "2"></p>
<p attrib1 = "3" attrib2 = "4"></p>
с помощью XPath я могу найти узел, в котором есть атрибут(имени я заранее не знаю) со значением например 2.
XP->query("//*[@*='2']");
Можно ли и как найти(вызвать) имя атрибута( =attrib2 )?
 

medwoodu

Новичок
ViJu можно, вызвав все атрибуты и тупо их перебрать, но можно ли это сделать красиво?
 

ViJu

Новичок
все необходимое есть на одной странице в мануале

PHP:
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$XMLSTRING = <<< EOF
<div>
<p attrib1 = "1" attrib2 = "2">r</p>
<p attrib1 = "3" attrib2 = "4">t</p>
</div>
EOF;

$doc->LoadXML($XMLSTRING);

$xpath = new DOMXPath($doc);

$query = "//*[@*='2']";

$entries = $xpath->query($query);
print($XMLSTRING);
foreach ($entries as $entry) {
  foreach ($entry->attributes as $attribute) {
    if ($attribute->value == '2'){
      echo $attribute->name;
    };
  }
}
-~{}~ 05.07.06 18:29:

а красиво, т.е. через XPath вроде нельзя
 

olpa

Новичок
Как-нибудь так:
PHP:
foreach ($xpath->query("//*/@*[string()='2']") as $a) {
  echo $a->name;
}
 

medwoodu

Новичок
olpa
СПАСИБО, это красивей :)
Хотя для моих целей первый вариант удобнее, мне еще и узлы нужны
 
Сверху