Это распечатка из переменной $baseTypeDerivedDataTypeRefModel
и я $baseTypeDerivedDataTypeRefModel
что получил $baseTypeDerivedDataTypeRefModel
мне ценность. Мне нужно извлечь значение int16, int64 и т.д. Из SimpleXMLObject. Я использовал $baseTypeDerivedDataTypeRefModel[0]
и $baseTypeDerivedDataTypeRefModel->getName()
и кучу других вещей и не могу заставить его работать, я знаю его, вероятно, что-то простое, но это сводит меня с ума!
SimpleXMLElement Object ( [int16] => SimpleXMLElement Object ( [range] => SimpleXMLElement Object ( [min] => 1 [max] => 10 ) [ranges] => SimpleXMLElement Object ( [subrange] => SimpleXMLElement Object ( [min] => 1 [max] => 10 ) ) [multiplicationFactor] => 2 [resolution] => 2 ) )
SimpleXMLElement Object ( [int64] => SimpleXMLElement Object ( [range] => SimpleXMLElement Object ( [min] => 1 [max] => 10 ) [ranges] => SimpleXMLElement Object ( [subrange] => SimpleXMLElement Object ( [min] => 1 [max] => 10 ) ) [multiplicationFactor] => 2 [resolution] => 2 ) )
SimpleXMLElement Object ( [int16] => SimpleXMLElement Object ( [range] => SimpleXMLElement Object ( [min] => 1 [max] => 10 ) [ranges] => SimpleXMLElement Object ( [subrange] => SimpleXMLElement Object ( [min] => 1 [max] => 10 ) ) [multiplicationFactor] => 2 [resolution] => 2 ) )
SimpleXMLElement Object ( [uint8] => SimpleXMLElement Object ( ) )
SimpleXMLElement Object ( [int16] => SimpleXMLElement Object ( [range] => SimpleXMLElement Object ( [min] => 1 [max] => 10 ) [ranges] => SimpleXMLElement Object ( [subrange] => SimpleXMLElement Object ( [min] => 1 [max] => 10 ) ) [multiplicationFactor] => 2 [resolution] => 2 ) )
SimpleXMLElement Object ( [string] => SimpleXMLElement Object ( ) )
<derivedDataType name="DerivedIntDatatypeU16">
<description>Random Desc </description>
<baseType>
<int16>
<range>
<min>1</min>
<max>10</max>
</range>
<ranges>
<subrange>
<min>1</min>
<max>10</max>
</subrange>
</ranges>
<multiplicationFactor>2</multiplicationFactor>
<resolution>2</resolution>
</int16>
</baseType>
</derivedDataType>
Поскольку вы никогда не знаете, сколько элементов "baseType" (в конце концов, это XML), вы можете сделать это, чтобы получить имя первого элемента:
$xmlstring = '<derivedDataType name="DerivedIntDatatypeU16"> ... </derivedDataType>';
$xml = new SimpleXMLElement($xmlstring);
// Cast the SimpleXMLObject as an array
$list = (array) $data->baseType;
// Reset the array pointer (so we know we're at the start of the array)
reset($list);
// Get the key name of the first element
$name = key($list);
Это извлекает список baseType, отбрасывает его как массив и затем получает ключ первого элемента массива.
Там могут быть (или, скорее всего,) лучшие способы сделать это, но это работает.