#php
#php
Вопрос:
у меня есть следующий XML, возвращенный из вызова jsp
<assumption name="test" id="34" description="vector description" is_shared="no" vector_type="Prepay">
<userVector>
<vectorType>"Prepay"</vectorType>
<ppydefTypeCode>"CDR"</ppydefTypeCode>
<ppydefVector>
<vectorName>"test"</vectorName>
<vectorSeasoning>No</vectorSeasoning>
<vectorPeriod>"6 12"</vectorPeriod>
<vectorData>"7 4"</vectorData>
</ppydefVector>
</userVector>
</assumption>
Каков наилучший способ получить информацию о VectorType и vectorName с помощью php.
Я пробовал что-то подобное, но не был уверен, как получить значение узла в php
foreach ($xmlDoc->getElementsByTagName('userVector') as $vectorRow)
{
$vectorType = $xmlDoc->getElementsByTagName('vectorType');
}
Ответ №1:
getElementsByTagName('vectorType')
вернет a DOMNodeList
, который вам дополнительно придется перебирать. Вы можете сохранить значение каждого элемента в переменной, обратившись к их nodeValue
полям.
foreach ($xmlDoc->getElementsByTagName('userVector') as $vectorRow){
$vectorTypes = $vectorRow->getElementsByTagName('vectorType');
foreach ($vectorTypes as $vectorTypeElement){
$vectorType = $vectorTypeElement->nodeValue;
}
}
Комментарии:
1. как мне проверить, существует ли элемент VectorType или нет
2. Технически мы должны предположить, что может быть несколько векторных типов, поэтому вы должны проверить, больше ли sizeof($vectorTypes) 0 .
Ответ №2:
Попробуйте это:
$sx = new SimpleXMLElement($XMLData);
echo $sx->xpath('/assumption/userVector/vectorType')[0];
echo $sx->xpath('/assumption/userVector/ppydefVector/vectorName')[0];
Выводит:
"Prepay"
"test"
Комментарии:
1. Не беспокойтесь, надеюсь, это помогло 🙂