php не может проанализировать файл c properties.settings из-за одного из названий полей?

#c# #php #xml

#c# #php #xml — файл #xml

Вопрос:

У меня есть простое приложение на c #, которое извлекает ключевую информацию из своих внутренних свойств.Файл настроек. По сути, это система синхронизации для запуска событий. Сейчас я пишу веб-графический интерфейс, позволяющий пользователям изменять настройки, поскольку эта служба (c # one) запущена на сервере.

Проблема в этом. При разборе XML-файла в PHP я не могу разобрать следующую строку:

  <userSettings>
    <TimingSystem.Properties.Settings>
        <setting name="Time1" serializeAs="String">
            <value>14:08</value>
        </setting>
  

TimingSystem.Свойства.Настройки выдают ошибку в коде, потому что PHP не нравится тег вот код:

     $mycode = simplexml_load_file('TimingSystem.exe.config');
    $Time1 = $mycode->configuration->userSettings->TimingSystem.Properties.Settings->setting['Time1']->value;
  

возвращает ошибку:

Пытаюсь получить свойство не-объекта

и

синтаксическая ошибка, неожиданный T_OBJECT_OPERATOR

Как я могу решить это, чтобы он мог проанализировать файл настроек. Я не стремлюсь переписывать свою программу для использования обычного XML-файла.

Любая помощь была бы высоко оценена.

Ответ №1:

попробуйте обернуть разделенное имя дерева ‘.’ в {'xxx'} виде:

 $mycode = simplexml_load_file('TimingSystem.exe.config');
$Time1 = $mycode->configuration->userSettings->{'TimingSystem.Properties.Settings'}->setting['Time1']->value;
  

не уверен на 100%, что это сработает, но стоит попробовать. дайте мне знать, что произойдет.

в качестве альтернативы, сделайте это переменной.

 $treeName = 'TimingSystem.Properties.Settings';
$Time1 = $mycode->configuration->userSettings->$treeName->setting['Time1']->value;
  

Комментарии:

1. он не выдает ошибку, но теперь я просто не могу вернуть какие-либо значения. Я прошу выполнить синтаксический анализ неправильно?

2. итак, var_dump на анализируемом объекте .. т. е. var_dump($mycode); , чтобы увидеть, что возвращает анализатор..

3. Похоже, я получаю весь XML обратно. Я думаю, мне просто нужно пойти и выяснить значения дерева, которые мне нужно ввести!

4. убедитесь, что возвращаемое значение является объектом, а не массивом, так как это вызовет ошибку, которую вы видите.. возможно, вам придется использовать доступ к массиву, например $mycode['configuration']['userSettings']....

5. возможно, setting['Time1'] неверно, поэтому попробуйте посмотреть на var_dump($mycode->configuration->userSettings->{'TimingSystem.Properties.Settings'}->setting);