#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);