Я пытаюсь закомментировать многострочный раздел xml в выходной файл, используя qxmlstreamwriter. Я нахожусь в цикле, перебирая мои вложенные структуры, и если структура помечена как isCommented, то мне нужно вставить «<! - -» (без пробелов)
затем продолжайте писать XML-форму вывода. Когда я доберусь до конца этой структуры, мне нужно вставить конечный комментарий: «->».
Метод qxmlstreamwriter :: writeCharacters (QString) будет недостаточен, так как он выбирает специальные символы, такие как «<», и повторно их интерпретирует. Я уже занимался искоренением случаев для вложенных комментариев ... так что это не проблема (внутренний и внешний цикл гарантированно не будут прокомментированы). Есть идеи для альтернативного решения? Ниже приведен пример моего кода: </p>
...
QXmlStreamWriter writer(&myFile)
for (int i = 0; i < bigStruct.size(); i++){
if (bigStruct.at(i)->isCommented){
//start comment sequence
//insert "<!--"
}
writer.writeStartElement("BigStruct");
for (int j = 0; j < smallerStruct; j++){
if (smallerStruct.at(i)->isCommented){
//start comment sequence
//insert "<!--"
}
writer.writeStartElement("SmallerStruct");
writer.writeTextElement("Stuff", "blah");
writer.writeTextElement("More Stuff", "blah blah blah");
writer.writeEndElement();
if (smallerStruct.at(i)->isCommented){
//end comment sequence
//insert "-->"
}
}
writer.writeEndElement();
if (bigStruct.at(i)->isCommented){
//endcomment sequence
//insert "-->"
}
}
...
Пример вывода XML может выглядеть как
<BigStruct>
<SmallerStruct>
<Stuff>blah</Stuff>
<More Stuff>blah blah blah</More Stuff>
</SmallerStruct>
<!--
<SmallerStruct>
<Stuff>blah</Stuff>
<More Stuff>blah blah blah</More Stuff>
</SmallerStruct>
-->
</BigStruct>
<!--
<BigStruct>
<SmallerStruct>
<Stuff>blah</Stuff>
<More Stuff>blah blah blah</More Stuff>
</SmallerStruct>
</BigStruct>
-->
writeComment () была моей первой попыткой комментирования, однако она записывает только одну строку. Конечно, я мог бы создать большую строку с символами '\ n', где это необходимо, но код, необходимый для создания этого блока, мог бы избежать потока программы моих циклов. Что мне нужно, так это удобный способ иметь writer.startComment () и writer.endComment () ... такой, чтобы я мог указать начало и конец комментария после того, как был написан другой xml , Поэтому я мог написать XML, используя свой qxmlstreamwriter внутри комментария.
Спасибо за ваше время.