如何将xml转换为c++;一串

如何将xml转换为c++;一串,xml,c++11,xps,Xml,C++11,Xps,我需要使我的xml成为一个有效的字符串,这样我们就可以将它输入到解析器中。由于某些原因,我在获取有效字符串时遇到问题。我们所有的例子更多的是一个缩写版本,但是这个必须是完整版本(即Canvas.Clip)。我的问题是,如何使以下代码有效 static const char* pCanvasData = "\ <Canvas>\ <Canvas.Name = \"Test\" />\

我需要使我的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>";
static const char*pCanvasData=”\
\
\
\
= \"0.5\" />\
\
\
\
\
\
\ 
\**********这是编译器说的“错误缺少结束引号”,最后一个多段线段的颜色错误(黑色而不是红色),但在最后一个引号“80170\”/>处再次变为红色\
\
\
\
";

可能有一句话漏了,但我没看到。另外,斜杠可能也有我遗漏的地方,因为这是第一次为这种类型的xps使用非缩写xml。我将感谢任何帮助!为了避免任何问题,我们不能将xml提供给xml类。我需要这里的字符*。

似乎在“\”之后有多余的空白字符。只需将鼠标光标放在这一行之后,按一下擦除按钮即可


实际上,您可以在记事本++中看到这一点,如果选择“查看->显示符号->显示空白”和“制表符”

,则在“\”之后可能会有多余的空白字符。只需将鼠标光标放在这一行之后,按一下擦除按钮即可


实际上,您可以在记事本++中看到这一点,如果在C++11中选择“查看->显示符号->显示空白”和“制表符”

,则会出现原始字符串文字,这可能会有所帮助:

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

这样,您就不必转义任何引号。

在C++11中,存在原始字符串文本,这可能有助于:

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

这样你就不必逃避任何引用。

我的意思是在这行之后:\谢谢!!!这让编译器很高兴!我还删除了true之后的额外斜杠,因为PathFigure在下面是封闭的,而不是同一行。另外,路径前面有一条斜线,方向不对。数据关闭行。我的意思是在这行之后:\谢谢!!!这让编译器很高兴!我还删除了true之后的额外斜杠,因为PathFigure在下面是封闭的,而不是同一行。另外,路径前面有一条斜线,方向不对。数据闭合线。