Read XML and replace some strings with Stringreader in C#



Using C# with WPF, I saved an XML file containing the following XElement :



<Content>
&amp;lt;Rectangle StrokeThickness="2" ToolTip="Data" xmlns="http://ift.tt/o66D3f" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:x="http://ift.tt/mPTqtT" xmlns:dd="clr-namespace:DiagramDesigner;assembly=ADAX_GUI"&amp;gt;&amp;lt;Rectangle.Style&amp;gt;&amp;lt;Style TargetType="Rectangle"&amp;gt;&amp;lt;Style.BasedOn&amp;gt;&amp;lt;Style TargetType="Rectangle"&amp;gt;&amp;lt;Style.Resources&amp;gt;&amp;lt;ResourceDictionary /&amp;gt;&amp;lt;/Style.Resources&amp;gt;&amp;lt;Setter Property="Shape.Fill"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;LinearGradientBrush StartPoint="0,0" EndPoint="0,1"&amp;gt;&amp;lt;LinearGradientBrush.GradientStops&amp;gt;&amp;lt;GradientStop Color="#FFFAFBE9" Offset="0" /&amp;gt;&amp;lt;GradientStop Color="#FFFFA500" Offset="1" /&amp;gt;&amp;lt;/LinearGradientBrush.GradientStops&amp;gt;&amp;lt;/LinearGradientBrush&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="Shape.Stroke"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;SolidColorBrush&amp;gt;#FFD69436&amp;lt;/SolidColorBrush&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="Shape.StrokeThickness"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;s:Double&amp;gt;1&amp;lt;/s:Double&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="Shape.StrokeLineJoin"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;x:Static Member="PenLineJoin.Round" /&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="Shape.Stretch"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;x:Static Member="Stretch.Fill" /&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="UIElement.IsHitTestVisible"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;s:Boolean&amp;gt;False&amp;lt;/s:Boolean&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="UIElement.SnapsToDevicePixels"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;s:Boolean&amp;gt;True&amp;lt;/s:Boolean&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;/Style&amp;gt;&amp;lt;/Style.BasedOn&amp;gt;&amp;lt;Style.Resources&amp;gt;&amp;lt;ResourceDictionary /&amp;gt;&amp;lt;/Style.Resources&amp;gt;&amp;lt;/Style&amp;gt;&amp;lt;/Rectangle.Style&amp;gt;&amp;lt;dd:DesignerItem.DragThumbTemplate&amp;gt;&amp;lt;ControlTemplate&amp;gt;&amp;lt;Rectangle Name="DataShape" Tag="DataShapeTag"&amp;gt;&amp;lt;Rectangle.Style&amp;gt;&amp;lt;Style TargetType="Rectangle"&amp;gt;&amp;lt;Style.BasedOn&amp;gt;&amp;lt;Style TargetType="Rectangle"&amp;gt;&amp;lt;Style.BasedOn&amp;gt;&amp;lt;Style TargetType="Rectangle"&amp;gt;&amp;lt;Style.Resources&amp;gt;&amp;lt;ResourceDictionary /&amp;gt;&amp;lt;/Style.Resources&amp;gt;&amp;lt;Setter Property="Shape.Fill"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;LinearGradientBrush StartPoint="0,0" EndPoint="0,1"&amp;gt;&amp;lt;LinearGradientBrush.GradientStops&amp;gt;&amp;lt;GradientStop Color="#FFFAFBE9" Offset="0" /&amp;gt;&amp;lt;GradientStop Color="#FFFFA500" Offset="1" /&amp;gt;&amp;lt;/LinearGradientBrush.GradientStops&amp;gt;&amp;lt;/LinearGradientBrush&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="Shape.Stroke"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;SolidColorBrush&amp;gt;#FFD69436&amp;lt;/SolidColorBrush&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="Shape.StrokeThickness"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;s:Double&amp;gt;1&amp;lt;/s:Double&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="Shape.StrokeLineJoin"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;x:Static Member="PenLineJoin.Round" /&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="Shape.Stretch"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;x:Static Member="Stretch.Fill" /&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="UIElement.IsHitTestVisible"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;s:Boolean&amp;gt;False&amp;lt;/s:Boolean&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="UIElement.SnapsToDevicePixels"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;s:Boolean&amp;gt;True&amp;lt;/s:Boolean&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;/Style&amp;gt;&amp;lt;/Style.BasedOn&amp;gt;&amp;lt;Style.Resources&amp;gt;&amp;lt;ResourceDictionary /&amp;gt;&amp;lt;/Style.Resources&amp;gt;&amp;lt;/Style&amp;gt;&amp;lt;/Style.BasedOn&amp;gt;&amp;lt;Style.Resources&amp;gt;&amp;lt;ResourceDictionary /&amp;gt;&amp;lt;/Style.Resources&amp;gt;&amp;lt;Setter Property="UIElement.IsHitTestVisible"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;s:Boolean&amp;gt;True&amp;lt;/s:Boolean&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="FrameworkElement.Height"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;s:Double&amp;gt;300&amp;lt;/s:Double&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="FrameworkElement.Width"&amp;gt;&amp;lt;Setter.Value&amp;gt;&amp;lt;s:Double&amp;gt;200&amp;lt;/s:Double&amp;gt;&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;Setter Property="FrameworkElement.Tag"&amp;gt;&amp;lt;Setter.Value&amp;gt;DataShape&amp;lt;/Setter.Value&amp;gt;&amp;lt;/Setter&amp;gt;&amp;lt;/Style&amp;gt;&amp;lt;/Rectangle.Style&amp;gt;&amp;lt;/Rectangle&amp;gt;&amp;lt;/ControlTemplate&amp;gt;&amp;lt;/dd:DesignerItem.DragThumbTemplate&amp;gt;&amp;lt;/Rectangle&amp;gt;
</Content>


The output XML file is saved using XElement.save function. Then I read this line and want to replace all those "amp;" stings with empty sting, for that I did like this:



//XML is the input file saved as mentioned above
string contentValue = XML.Element("Content").Value.ToString();
contentValue.Replace("amp;", string.Empty);


It successfully removes out amp; but the problem is, contentValue here places \ before each and every " operator, and adds " at the very beginning and end of the contentValue like this:



"&lt;Rectangle StrokeThickness=\"2\" Tag=\"Default Process Tag\" ToolTip=\"Process\" xmlns=\"http://ift.tt/o66D3f\" xmlns:s=\"clr-namespace:System;assembly=mscorlib\" xmlns:x=\"http://ift.tt/mPTqtT\" xmlns:dd=\"clr-namespace:DiagramDesigner;assembly=ADAX_GUI\"&gt;&lt;Rectangle.Style&gt;&lt;Style TargetType=\"Rectangle\"&gt;&lt;Style.BasedOn&gt;&lt;Style TargetType=\"Rectangle\"&gt;&lt;Style.Resources&gt;&lt;ResourceDictionary /&gt;&lt;/Style.Resources&gt;&lt;Setter Property=\"UIElement.RenderTransform\"&gt;&lt;Setter.Value&gt;&lt;SkewTransform AngleX=\"-15\" AngleY=\"0\" CenterX=\"50\" CenterY=\"25\" /&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"Shape.Fill\"&gt;&lt;Setter.Value&gt;&lt;LinearGradientBrush StartPoint=\"0,0\" EndPoint=\"0,1\"&gt;&lt;LinearGradientBrush.GradientStops&gt;&lt;GradientStop Color=\"#FFFAFBE9\" Offset=\"0\" /&gt;&lt;GradientStop Color=\"#FFFFA500\" Offset=\"1\" /&gt;&lt;/LinearGradientBrush.GradientStops&gt;&lt;/LinearGradientBrush&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"Shape.Stroke\"&gt;&lt;Setter.Value&gt;&lt;SolidColorBrush&gt;#FFD69436&lt;/SolidColorBrush&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"Shape.StrokeThickness\"&gt;&lt;Setter.Value&gt;&lt;s:Double&gt;1&lt;/s:Double&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"Shape.StrokeLineJoin\"&gt;&lt;Setter.Value&gt;&lt;x:Static Member=\"PenLineJoin.Round\" /&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"Shape.Stretch\"&gt;&lt;Setter.Value&gt;&lt;x:Static Member=\"Stretch.Fill\" /&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"UIElement.IsHitTestVisible\"&gt;&lt;Setter.Value&gt;&lt;s:Boolean&gt;False&lt;/s:Boolean&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"UIElement.SnapsToDevicePixels\"&gt;&lt;Setter.Value&gt;&lt;s:Boolean&gt;True&lt;/s:Boolean&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;/Style&gt;&lt;/Style.BasedOn&gt;&lt;Style.Resources&gt;&lt;ResourceDictionary /&gt;&lt;/Style.Resources&gt;&lt;/Style&gt;&lt;/Rectangle.Style&gt;&lt;dd:DesignerItem.DragThumbTemplate&gt;&lt;ControlTemplate&gt;&lt;Rectangle Name=\"ProcessShape\" Width=\"250\" Height=\"150\"&gt;&lt;Rectangle.Style&gt;&lt;Style TargetType=\"Rectangle\"&gt;&lt;Style.BasedOn&gt;&lt;Style TargetType=\"Rectangle\"&gt;&lt;Style.BasedOn&gt;&lt;Style TargetType=\"Rectangle\"&gt;&lt;Style.Resources&gt;&lt;ResourceDictionary /&gt;&lt;/Style.Resources&gt;&lt;Setter Property=\"UIElement.RenderTransform\"&gt;&lt;Setter.Value&gt;&lt;SkewTransform AngleX=\"-15\" AngleY=\"0\" CenterX=\"50\" CenterY=\"25\" /&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"Shape.Fill\"&gt;&lt;Setter.Value&gt;&lt;LinearGradientBrush StartPoint=\"0,0\" EndPoint=\"0,1\"&gt;&lt;LinearGradientBrush.GradientStops&gt;&lt;GradientStop Color=\"#FFFAFBE9\" Offset=\"0\" /&gt;&lt;GradientStop Color=\"#FFFFA500\" Offset=\"1\" /&gt;&lt;/LinearGradientBrush.GradientStops&gt;&lt;/LinearGradientBrush&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"Shape.Stroke\"&gt;&lt;Setter.Value&gt;&lt;SolidColorBrush&gt;#FFD69436&lt;/SolidColorBrush&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"Shape.StrokeThickness\"&gt;&lt;Setter.Value&gt;&lt;s:Double&gt;1&lt;/s:Double&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"Shape.StrokeLineJoin\"&gt;&lt;Setter.Value&gt;&lt;x:Static Member=\"PenLineJoin.Round\" /&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"Shape.Stretch\"&gt;&lt;Setter.Value&gt;&lt;x:Static Member=\"Stretch.Fill\" /&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"UIElement.IsHitTestVisible\"&gt;&lt;Setter.Value&gt;&lt;s:Boolean&gt;False&lt;/s:Boolean&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;Setter Property=\"UIElement.SnapsToDevicePixels\"&gt;&lt;Setter.Value&gt;&lt;s:Boolean&gt;True&lt;/s:Boolean&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;/Style&gt;&lt;/Style.BasedOn&gt;&lt;Style.Resources&gt;&lt;ResourceDictionary /&gt;&lt;/Style.Resources&gt;&lt;/Style&gt;&lt;/Style.BasedOn&gt;&lt;Style.Resources&gt;&lt;ResourceDictionary /&gt;&lt;/Style.Resources&gt;&lt;Setter Property=\"UIElement.IsHitTestVisible\"&gt;&lt;Setter.Value&gt;&lt;s:Boolean&gt;True&lt;/s:Boolean&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;&lt;/Style&gt;&lt;/Rectangle.Style&gt;&lt;/Rectangle&gt;&lt;/ControlTemplate&gt;&lt;/dd:DesignerItem.DragThumbTemplate&gt;&lt;/Rectangle&gt;"


I tried to replace those \ :



contentValue.Replace("\\", string.Empty);


But still it is the same. I want to pass this input string to another function where it should be exactly the same as the XML file Content element value, without \ and "s. How can I remove this \ together with those " at the beginning and end of the contentValue string while reading? Thank you.


No comments:

Post a Comment