2015-09-01 3 views
0

Я хотел бы знать, есть ли способ получить значения атрибутов XML из разных элементов с помощью SimpleXML?Получить значение атрибута из разных элементов (simpleXML)

Учитывая следующий XML:

<element1> 
    <sub-element1 color="red">Content</sub-element1> 
</element1> 
<element2> 
    <sub-element2 color="blue">Content</sub-element> 
</element2> 

Я хотел бы разобрать этот XML, чтобы получить:

red 
blue 

Пожалуйста, обратите внимание, что атрибут «цвет» может существовать в более чем 30 различных элементов, так Я не хочу выбирать элемент атрибута по элементу.

Благодарим за помощь!

Damien

+0

Это не правильный XML, Надлежащая XML будет иметь element1 и element2 как дети в родительском элементе. Может быть только один корень XML-документа. – skrilled

+0

, конечно, есть корневой элемент «основной элемент». –

+1

У вас есть код, чтобы показать нам, что вы пытались? И злоупотребление @skrilled не помогает. Фрагмент, который вы нам показали, это просто фрагмент. –

ответ

0

Вы можете использовать следующее выражение XPath для получения color атрибута любого элемента в документе XML:

//*/@color 

Обратите внимание, что вы можете использовать * ссылаться элементом любого имени, и использовать @* для ссылки атрибут любого имени в XPath.

eval.in demo:

$string = <<<XML 
<root> 
    <element1> 
     <sub-element1 color="red">Content</sub-element1> 
    </element1> 
    <element2> 
     <sub-element2 color="blue">Content</sub-element2> 
    </element2> 
</root> 
XML; 
$xml = new SimpleXMLElement($string); 
$colors = $xml->xpath("//*/@color"); 
foreach($colors as $color){ 
    echo $color ."\r\n"; 
} 

выход:

red 
blue 
Смежные вопросы