LINUX.ORG.RU

qdbusxml2cpp: Cannot process input

 , ,


0

0

Hi all. Собственно сабж. Пытаюсь сгенерировать dbus-овский интерфейс из XML, на что qdbusxml2cpp говорит мне:

$ qdbusxml2cpp -c UdisksInterface  udisksinterface.xml udisksinterface
Cannot process input: 'udisksinterface.xml'. Stop.

Сам XML:

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
  <interface name="org.freedesktop.UDisks">
    <signal name="DeviceAdded">
      <arg name="device" type="o"/>
    </signal>
    
    <signal name="DeviceRemoved">
      <arg name="device" type="o"/>
    </signal>
    
    <signal name="DeviceChanged">
      <arg name="device" type="o"/>
    </signal>
    
    <method name="EnumerateDevices">
      <arg name="devices" type="ao" direction="out"/>
    </method>
    
  </interface>
</node>

Причем также даже с примерами откуда-нибудь (из документации для разработчиков кед, например). Подозреваю, что прчина банальна, но ничего не гуглится. Где я неправ?



Последнее исправление: Shotgun (всего исправлений: 1)

Полез в исходники этого qdbusxml2cpp, вижу это:

static QDBusIntrospection::Interfaces readInput()
{
    QFile input(inputFile);
    if (inputFile.isEmpty() || inputFile == QLatin1String("-"))
        input.open(stdin, QIODevice::ReadOnly);
    else
        input.open(QIODevice::ReadOnly);

    QByteArray data = input.readAll();

    // check if the input is already XML
    data = data.trimmed();
    if (data.startsWith("<!DOCTYPE ") || data.startsWith("<?xml") ||
        data.startsWith("<node") || data.startsWith("<interface"))
        // already XML
        return QDBusIntrospection::parseInterfaces(QString::fromUtf8(data));

    fprintf(stderr, "Cannot process input: '%s'. Stop.\n", qPrintable(inputFile));
    exit(1);
}
Прогоняю отладчиком - GDB говорит, что data начинается вовсе не с <!DOCTYPE/<?xml/<node/и т.д., а с трех символов  (коды 239, 187, 191 соответственно), потому, очевидно, и считается, что XML не валиден. Откуда это могло взяться?

Shotgun
() автор топика
Ответ на: комментарий от EXL

Да, дело действительно в BOM. Всем спасибо.

Shotgun
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.