Как получить значения из файла SVG, используя QT - PullRequest
1 голос
/ 29 мая 2019

Мне нужен способ получить значения внутри файла svg в QT, используя XMLStreamReader. Как мне это сделать?

Вот значения внутри файла SVG.

enter image description here

И вот что я уже пробовал. Я пытаюсь распечатать значения, если я что-то получаю. Кстати, я новичок в QT.

xmlFile = new QFile("composition.svg");

if (!xmlFile->open(QIODevice::ReadOnly | QIODevice::Text))
                qDebug() << ("Load XML File Problem");

xmlReader = new QXmlStreamReader(xmlFile);


//Parse the XML until we reach end of it
while(!xmlReader->atEnd() && !xmlReader->hasError()) {
        // Read next element
        QXmlStreamReader::TokenType token = xmlReader->readNext();
        //If token is just StartDocument - go to next
        if(token == QXmlStreamReader::StartDocument) {
                continue;
        }
        //If token is StartElement - read it
        if(token == QXmlStreamReader::StartElement) {

                if(xmlReader->name() == "g") {
                        continue;
                }

                if(xmlReader->name() == "g") {
                    qDebug() << xmlReader->readElementText();
                    //fprintf(stderr, xmlReader->readElementText().toLatin1());
                }
        }
}

1 Ответ

3 голосов
/ 29 мая 2019
while(!xmlReader->atEnd() && !xmlReader->hasError()) {
        // Read next element
        QXmlStreamReader::TokenType token = xmlReader->readNext();
        //If token is just StartDocument - go to next
        if(token == QXmlStreamReader::StartDocument)
                continue;
        //If token is StartElement - read it
        if(token == QXmlStreamReader::StartElement)
        {
            if(xmlReader->name() == "g")
                   continue;
            if(xmlReader->name() == "polygon")
            {
                foreach(const QXmlStreamAttribute &attr, xmlReader->attributes())
                {
                    if (attr.name().toString() == QLatin1String("style"))
                    {
                        qDebug() << attr.value().toLatin1();
                    }
                }
            }
        }
}

Мне нужно было зациклить атрибуты / узлы, чтобы получить некоторые из его значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...