2015-03-06 3 views
0

Мне нужно сделать мой xml допустимой строкой, чтобы мы могли ее подавать в парсер. По какой-то причине у меня возникают проблемы с получением правильной строки. Все примеры, которые мы имеем, скорее сокращенно, но это должна быть полная версия (то есть Canvas.Clip). Мой вопрос: как мне сделать следующий действующий код?Как преобразовать xml в строку C++

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>"; 

Возможно, отсутствует пропущенная цитата, но я ее не вижу. Кроме того, может быть что-то, что мне не хватает с помощью слэшей, так как это первый раз, когда вы делаете не-сокращенный xml для этого типа xps. Буду признателен за любую помощь! Чтобы не обсуждать какие-либо вопросы, мы не можем кормить xml в xml-классы. Мне нужен символ * здесь.

ответ

2

Возможно, у вас может быть нежелательный лишний символ пробела после «\». Просто поместите курсор мыши после этой строки и нажмите кнопку стирания на один шаг.

Вы можете увидеть это в Notepad ++, если вы выбираете View -> Show Symbol -> Показать Пробелы и TAB

+0

Я имею в виду после этой строки: \ – Pr0t0c0l78

+0

Спасибо !!! Это сделало компилятор счастливым! Я также удалил лишнюю косую черту после истины, так как PathFigure закрыта ниже и не совпадает с той же строкой. Кроме того, у меня была косая черта в неправильном направлении перед линией закрытия Path.Data. – Michele

1

В C++ 11 есть сырые строковые литералы, которые могут помочь:

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

Таким образом, вам не нужно избегать кавычек.

+0

Это круто. Благодаря! – Michele

Смежные вопросы