JohnDaniels
@JohnDaniels

Что значат символы @ и # при разборе xml-файла?

Разбираю XML средствами битрикса, делаю
$objXML = new CDataXML();
$objXML->LoadString(file_get_contents('upload/importfile.xml'));
$arData = $objXML->GetArray();


в $arData получаю месиво

array(1) {
  ["TradeInExport"]=>
  array(2) {
    ["@"]=>
    array(0) {
    }
    ["#"]=>
    array(1) {
      ["Car"]=>
      array(143) {
        [0]=>
        array(2) {
          ["@"]=>
          array(0) {
          }
          ["#"]=>
          array(27) {
            ["InSaleDate"]=>
            array(1) {
              [0]=>
              array(2) {
                ["@"]=>
                array(0) {
                }
                ["#"]=>
                string(10) "11.07.2015"

и т д


Откуда они берутся?
  • Вопрос задан
  • 542 просмотра
Решения вопроса 1
@Qraxin
Это особенность метода GetArray.
Чтобы избавиться от них нужно либо самому собирать массив, либо пересобрать имеющийся.
Я пересобираю так:
foreach($arXml['feed']['#']['entry'] as $keyEntry => $arValue) {
    foreach($arValue['#'] as $sKey => $sVal) {
        if(is_array($sVal[0]['#']['properties'][0]['#'])) {
            foreach($sVal[0]['#']['properties'][0]['#'] as $keyProp => $valProp){
                $arResult[$keyEntry][$keyProp] = $valProp[0]['#'];
            }
        }
    }
}

У вас значения ключей feed, entry, properties могут быть другими либо отсутствовать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы