Ошибка в функции simplexml_load_string

У меня есть следующая строка в переменной php

<root>
  <id></id>
  <title>Maarch Capture Connector</title>
  <width>400</width>
  <height>250</height>
  <center>true</center>
  <fields>
    <node>
        <type>comboBox</type>
        <id>ingoing</id>
        <label>Courrier</label>
        <autocomplete>false</autocomplete>
        <values>
            <node>
                <id>Y</id>
                <label>Arrivée</label>
            </node>
            <node>
                <id>N</id>
                <label>Départ</label>
            </node>
        </values>
        <default_value>Y</default_value>
        <show_id>false</show_id>
        <mandatory>true</mandatory>
    </node>
    <node>
        <type>comboBox</type>
        <id>priority</id>
        <label>Priorité</label>
        <autocomplete>false</autocomplete>
        <values>
            <node>
                <id>0</id>
                <label>Priorité trés haute</label>
            </node>
            <node>
                <id>1</id>
                <label>Priorité haute</label>
            </node>
            <node>
                <id>2</id>
                <label>Priorité normale</label>
            </node>
            <node>
                <id>3</id>
                <label>Priorité basse</label>
            </node>
        </values>
        <default_value>2</default_value>
        <show_id>false</show_id>
        <mandatory>true</mandatory>
    </node>
    <node>
        <type>comboBox</type>
        <id>services</id>
        <label>Service</label>
        <autocomplete>false</autocomplete>
        <values>
            <node>
                <id>9</id>
                <label>Compay SEGUNDO</label>
            </node>
            <node>
                <id>10</id>
                <label>Contract 1 for Eric SPRITZ : Life insurance</label>
            </node>
            <node>
                <id>13</id>
                <label>Contract 1 for Thomas BECK : Life insurance</label>
            </node>
            <node>
                <id>11</id>
                <label>Contract 2 for Eric SPRITZ : Home insurance</label>
            </node>
            <node>
                <id>14</id>
                <label>Contract 2 for Thomas BECK : Home insurance</label>
            </node>
            <node>
                <id>12</id>
                <label>Contract 3 for Eric SPRITZ : Car insurance</label>
            </node>
            <node>
                <id>15</id>
                <label>Contract 3 for Thomas BECK : Car insurance</label>
            </node>
            <node>
                <id>8</id>
                <label>Edith PIAF</label>
            </node>
            <node>
                <id>1</id>
                <label>Eric SPRITZ</label>
            </node>
            <node>
                <id>5</id>
                <label>Joao GILBERTO</label>
            </node>
            <node>
                <id>6</id>
                <label>Luciano PAVAROTTI</label>
            </node>
            <node>
                <id>7</id>
                <label>Maria BETHANIA</label>
            </node>
            <node>
                <id>16</id>
                <label>MARTIN HR file</label>
            </node>
            <node>
                <id>17</id>
                <label>SMITH HR file</label>
            </node>
            <node>
                <id>3</id>
                <label>Teresa CRISTINA</label>
            </node>
            <node>
                <id>2</id>
                <label>Thomas BECK</label>
            </node>
            <node>
                <id>4</id>
                <label>Tom JOBIM</label>
            </node>
        </values>
        <show_id>false</show_id>
        <mandatory>true</mandatory>
    </node>
</fields>
</root>

Когда я пытаюсь читать с помощью функции simplexml_load_string

$xmlForm = simplexml_load_string($string);

Я получаю эту ошибку

Сущность: строка 1: ошибка парсера: ожидается начальный тег, '‹' не найден

Я не понимаю, что получается.


person Cesar Miguel    schedule 28.02.2013    source источник
comment
Попробуйте добавить <?xml version='1.0'?> и покажите нам, как вы инициализируете свою строку.   -  person MatRt    schedule 28.02.2013
comment
Попробуйте добавить <?xml заголовок PI. Ищите невидимые символы в начале файла; используйте шестнадцатеричный редактор.   -  person mario    schedule 28.02.2013
comment
Я вставил его в xmlvalidation.com, и теперь он сообщил об ошибках, так что, вероятно, есть некоторые лишние символы.   -  person Barmar    schedule 28.02.2013


Ответы (3)


Попробуйте заменить пустой тег <id></id> на <id/>

Хотя это технически правильно, это могло вызвать сбой в работе синтаксического анализатора.

В остальном мне кажется, что это хорошо сформированный XML.

person Christopher J Smith    schedule 28.02.2013
comment
Я не думаю, что это проблема с самозакрытыми тегами на данный момент. посмотрите на сообщение об ошибке ... - person MatRt; 28.02.2013

Выполните этот код:

<?php

$str =<<<XML_CONTENT
<?xml version='1.0'?>
<root>
  <id></id>
  <title>Maarch Capture Connector</title>
  <width>400</width>
  <height>250</height>
  <center>true</center>
  <fields>
    <node>
        <type>comboBox</type>
        <id>ingoing</id>
        <label>Courrier</label>
        <autocomplete>false</autocomplete>
        <values>
            <node>
                <id>Y</id>
                <label>Arrivée</label>
            </node>
            <node>
                <id>N</id>
                <label>Départ</label>
            </node>
        </values>
        <default_value>Y</default_value>
        <show_id>false</show_id>
        <mandatory>true</mandatory>
    </node>
    <node>
        <type>comboBox</type>
        <id>priority</id>
        <label>Priorité</label>
        <autocomplete>false</autocomplete>
        <values>
            <node>
                <id>0</id>
                <label>Priorité trés haute</label>
            </node>
            <node>
                <id>1</id>
                <label>Priorité haute</label>
            </node>
            <node>
                <id>2</id>
                <label>Priorité normale</label>
            </node>
            <node>
                <id>3</id>
                <label>Priorité basse</label>
            </node>
        </values>
        <default_value>2</default_value>
        <show_id>false</show_id>
        <mandatory>true</mandatory>
    </node>
    <node>
        <type>comboBox</type>
        <id>services</id>
        <label>Service</label>
        <autocomplete>false</autocomplete>
        <values>
            <node>
                <id>9</id>
                <label>Compay SEGUNDO</label>
            </node>
            <node>
                <id>10</id>
                <label>Contract 1 for Eric SPRITZ : Life insurance</label>
            </node>
            <node>
                <id>13</id>
                <label>Contract 1 for Thomas BECK : Life insurance</label>
            </node>
            <node>
                <id>11</id>
                <label>Contract 2 for Eric SPRITZ : Home insurance</label>
            </node>
            <node>
                <id>14</id>
                <label>Contract 2 for Thomas BECK : Home insurance</label>
            </node>
            <node>
                <id>12</id>
                <label>Contract 3 for Eric SPRITZ : Car insurance</label>
            </node>
            <node>
                <id>15</id>
                <label>Contract 3 for Thomas BECK : Car insurance</label>
            </node>
            <node>
                <id>8</id>
                <label>Edith PIAF</label>
            </node>
            <node>
                <id>1</id>
                <label>Eric SPRITZ</label>
            </node>
            <node>
                <id>5</id>
                <label>Joao GILBERTO</label>
            </node>
            <node>
                <id>6</id>
                <label>Luciano PAVAROTTI</label>
            </node>
            <node>
                <id>7</id>
                <label>Maria BETHANIA</label>
            </node>
            <node>
                <id>16</id>
                <label>MARTIN HR file</label>
            </node>
            <node>
                <id>17</id>
                <label>SMITH HR file</label>
            </node>
            <node>
                <id>3</id>
                <label>Teresa CRISTINA</label>
            </node>
            <node>
                <id>2</id>
                <label>Thomas BECK</label>
            </node>
            <node>
                <id>4</id>
                <label>Tom JOBIM</label>
            </node>
        </values>
        <show_id>false</show_id>
        <mandatory>true</mandatory>
    </node>
</fields>
</root>
XML_CONTENT;

$xmlForm = simplexml_load_string($str);

print_r($xmlForm);

echo "Everything is fine !";

?>

В онлайн-машине PHP, например: PHP онлайн

работают нормально, поэтому у вас может быть проблема с инициализацией строки (плохие невидимые символы ...?)

Примечание. Добавление тега заголовка XML - лучшее усилие, и о нем не следует забывать.

person MatRt    schedule 28.02.2013
comment
Я забыл упомянуть, что пытаюсь установить Maarch Capture Connector - person Cesar Miguel; 28.02.2013
comment
какое отношение к проблеме ..? Как инициализировать XML-строку тура? - person MatRt; 01.03.2013

Я решил свою проблему. Моя строка XML в порядке ... Проблема была в других файлах Maarch Enterprise, которые я был изменен. Извините за поздний ответ и спасибо за помощь :)

person Cesar Miguel    schedule 19.03.2013