Не могу получить имя тега доступа внутри SimpleXMLObject

1

Это распечатка из переменной $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>
  • 0
    Не могли бы вы опубликовать используемый вами XML?
  • 0
    В приведенном ниже примере xml необходимо получить строку «int16» путем доступа к имени тега и получить только базовый тип
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Поскольку вы никогда не знаете, сколько элементов "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, отбрасывает его как массив и затем получает ключ первого элемента массива.

Там могут быть (или, скорее всего,) лучшие способы сделать это, но это работает.

  • 0
    Это прекрасно работает, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню