извлечь все данные тега в QDomElement - PullRequest
1 голос
/ 25 сентября 2019

Я использую QtXml для манипулирования некоторым svg-файлом, и я пытаюсь сделать так, чтобы при обнаружении в документе определенного QDomElement я пытался сохранить все данные элемента xml (со всеми его дочерними элементами)в QString не только их атрибуты и / или тексты между тегами.

представьте себе этот тег: (тег g )

<g fill="#000000" fill-opacity="0" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
<rect x="25" y="50" width="50" height="25"/>
<text x="50" y="26" font-size="24" stroke-width="2px" text-anchor="middle">Screen</text>
</g>

, что я уже могу сделать, этоизвлекать такие атрибуты, как x , y , width , height , а также тексты между тегами, используя приведенные ниже коды:

    int x = gzElement.attribute("x").toInt(); // x=25
    int y = gzElement.attribute("y").toInt(); // y=50
    QString sampleText = gzElement.text(); // sampleText = Screen

но что я не могу сделать и пытаться связаться с ними, так это получить все теги g и его дочерние элементы, например:

//dummy code
QString tagData = gzElement.wholeData(); /* tagData =

"<g fill="#000000" fill-opacity="0" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
<rect x="25" y="50" width="50" height="25"/>
<text x="50" y="26" font-size="24" stroke-width="2px" text-anchor="middle">Screen</text>
</g>" */

кто-нибудь знаетФункция API в библиотеке Qt или другие альтернативные методы?или я должен реализовать это, используя чистые классы QString и QRegExp, чтобы вручную просмотреть файл svg (xml)

1 Ответ

0 голосов
/ 25 сентября 2019

хорошо, я получил свой собственный ответ, и я оставляю его здесь также на случай, если кто-то еще столкнется с такой проблемой.вы можете использовать QDomNode :: operator <<, чтобы сохранить все теги данных dom со всеми его потомками в QTextStream, используя эту функцию, описанную в Qt Doc. </p>

https://doc.qt.io/archives/qt-4.8/qdomnode.html#operator-lt-lt-205

...