讓我首先表達我的理解,即我想要做的是而不是正常,也不是典型的建議。我完全知道在正常的XML中,"
字符是保留的。如何停止QXmlStreamWriter轉義引號?
我使用Qt應用程序生成要在Visual Studio 2010中使用的.vcxproj
文件。我利用QXmlStreamWriter
類來編寫項目文件所需的XML。但是,由於Microsoft不遵守XML標準,我遇到了一個問題。
在CustomBuild
元素中,用戶需要指定構建文件的命令。在Visual Studio中的Qt項目的情況下,你最終是這樣的:
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o "..\myproj\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_SQL_LIB -DQT_OPENGL_LIB -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_SVG_LIB "-I." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtXml" "-I$(QTDIR)\include\QtSql" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\Qt3Support" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtTest" "-I..\myproj"</Command>
難吃,但就是生活,尤其是與微軟合作。 Unfortunatey,我QXmlStreamWriter
對象產生這種(完全兼容)輸出:
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe" "%(FullPath)" -o "..\myproj\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_SQL_LIB -DQT_OPENGL_LIB -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_SVG_LIB "-I." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtXml" "-I$(QTDIR)\include\QtSql" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\Qt3Support" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtTest" "..\myproj"</Command>
當然,Visual Studio是沒有深刻的印象。我在這裏有什麼選擇?我大概可以讀迴文件並且避開它,但這聽起來並不是特別有效或智能。
是的,我使用'writeCharacters()'方法。這是一個很好的主意。我會在早上工作並跟進。 –
賓果。那樣做了。爲了完成,我添加了自己的答案。 –