我正在尝试使用qxmlstreamwriter将xml的多行部分注释到输出文件。我在一个循环中,遍历我的嵌套结构,如果一个结构被标记为“isCommented”,那么我需要插入一个“<! - - ”(不含空格) 然后继续编写输出的XML形式。当我到达结构的末尾时,我需要插入结束注释:“ - >”。 qxmlstreamwriter :: writeCharacters(QString)方法是不够的,因为它会选择特殊字符,例如“<”并重新解释它们。我已经处理了嵌套注释的根除案例......所以这不是问题(内部和外部循环都保证不会被评论)任何替代解决方案的想法?以下是我的代码示例:
...
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之后指定注释的开始和结束书面。因此,我可以在评论中使用qxmlstreamwriter编写XML。
感谢您的时间。
答案 0 :(得分:0)
我认为这不可能,看看QXmlStreamWriter API。您可以在临时QByteArray上使用另一个QXmlStreamWriter,并将字节数组的内容作为注释写入原始编写器。