如何将xml转换为c ++字符串

时间:2015-03-06 13:32:32

标签: xml c++11 xps

我需要让我的xml成为一个有效的字符串,以便我们可以将它提供给解析器。出于某种原因,我无法获得有效的字符串。我们所有的例子都是缩写版本,但这个版本需要是完整版本(即Canvas.Clip)。我的问题是,如何制作以下有效代码?

static const char* pCanvasData = "\
              <Canvas>\
                    <Canvas.Name = \"Test\" />\
                    <Canvas.RenderTransform = \"1, 0, 0, 1, 0, 290\" />\
                    <Canvas.Opacity> = \"0.5\" />\
                    <Canvas.Clip = \"M 40,75 H 30 V 25 Z\" />\
                    <Path Fill=\"#FFFF0000\" />\
                    <Path.Data>\
                        <PathGeometry>\
                            <PathFigure StartPoint=\"30,70\" IsClosed=\"true\" />\
                                  <PolyLineSegment Points=\"110,170\" />\ 
                                  <PolyLineSegment Points=\"80,170\" />\  **********this is where the compiler says "error missing closing quote" and last PolyLineSegment is the wrong color (black instead of red), but it turns red again at the last quote of "80,170\" />\
                             </PathFigure>\
                         </PathGeometry>\
                    <\Path.Data>\
               </Canvas>";

可能缺少报价,但我没有看到。此外,可能有一些我缺少斜杠的东西,因为这是第一次为这种类型的xps做非缩写的xml。我很感激任何帮助!只是为了避免任何问题,我们无法将xml提供给xml类。我需要这里的char *。

2 个答案:

答案 0 :(得分:2)

在&#34; \&#34;之后,您可能会有一个不需要的额外空白字符。只需将鼠标光标放在此行后面,然后点击“擦除”按钮一步。

如果你选择View - &gt;,你可以在Notepad ++中看到这个。显示符号 - &gt;显示空白和TAB

答案 1 :(得分:1)

在C ++ 11中有原始的字符串文字,这可能会有所帮助:

static const char* pCanvasData = R"zzz(
    <Canvas>
        <Canvas.Name = "Test" />
        <Canvas.RenderTransform = "1, 0, 0, 1, 0, 290" />
        ...
)zzz";

这样你就不必逃避任何报价。