Конвертирование XML (WPF) в SVG (Regex) - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Из библиотеки SilverLight взята XML разметка, которая рисует мнемосхему. По сути мне нужно ненужные участки кода удалить, а которые необходимо оставить и начало тегов поменять. По поводу удаления. Есть участки кода, которые не смогут быть использованы в SVG, это календарь, листбокс, чексбокс и т.д. Мне их нужно удалить. Пример,
        
            >
                >
                    >
                        >
                            >
                                >>
                            >
                        >
                    >
                    >
                        >
                            >
                                >
                            >
                        >
                    >
                >
            >
            >
                >
                    >
                        >
                            >
                                >
                            >
                        >
                    >
                    >
                        
                    >
                >
            >
            >
                >
            >
        >
Как видно он начинается

и заканчивается . Если я пишу паттерн

то выделяется заголовок тега. 
Если я пишу 
(?<=
то выделяет всё внутри тега, и еще чуть попадает от другим тегов. Если я совмещаю
то идёт начальный тег полностью, что мне собственно и нужно. Но я уже день мучаюсь, и меня заклинило, как получить весь текст с самим тегом от до
. Помогите пожалуйста! Весь пример.

    
        >>
        
            >
                >
                    >
                        >
                            >
                                >
                                    >
                                        >
                                    >
                                >
                            >
                        >
                    >
                >
            >
            >>
        >
        
            >
                >
                    >
                        >
                            >
                                >
                                    >
                                        >
                                    >
                                >
                            >
                        >
                    >
                >
            >
            >>
        >
        
            >
                >
                    >
                        >
                            >
                                >
                                    >
                                        >
                                    >
                                >
                            >
                        >
                    >
                >
            >
            >
                >
                    >
                        >
                            >
                                >>
                            >
                        >
                    >
                    >
                        >
                            >
                                >
                            >
                        >
                    >
                >
            >
            >>
        >
        
            >
                >
                    >
                        >
                            >
                                >
                                    >
                                        >
                                    >
                                >
                            >
                        >
                    >
                >
            >
            >
                >
                    >
                        >
                            >
                                >>
                            >
                        >
                    >
                    >
                        >
                            >
                                >
                            >
                        >
                    >
                >
            >
            >>
        >        
        
            >
                >
                    >
                        >
                            >
                                >>
                            >
                        >
                    >
                    >
                        >
                            >
                                >
                            >
                        >
                    >
                >
            >
            >
                >
                    >
                        >
                            >
                                >
                            >
                        >
                    >
                    >
                        
                    >
                >
            >
            >
                >
            >
        >
        
            >
                >
                    >
                        >
                            >
                                >>
                            >
                        >
                    >
                    >
                        >
                            >
                                >
                            >
                        >
                    >
                >
            >
            >
                >
                    >
                        >
                            >
                                >
                            >
                        >
                    >
                    >
                        
                    >
                >
            >
            >
                >
            >
        >
    >
>

Решение задачи: «Конвертирование XML (WPF) в SVG (Regex)»

textual
Листинг программы
string xml = "<UserControl xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xm" +
    "lns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" Width=\"740\" Height=\"773\" xm" +
    "lns:aaGraphic=\"clr-namespace:ArchestrA.Visualization.GraphicLibraryRuntime;assem" +
    "bly=ArchestrA.Visualization.GraphicLibraryRuntime\" xmlns:aaSOW=\"clr-namespace:aa" +
    "SOW\" x:Class=\"aaSOW.symbol_62811\" xmlns:controls=\"clr-namespace:System.Windows.C" +
    "ontrols;assembly=System.Windows.Controls\">\r\n    <aaGraphic:aaSymbol x:Name=\"symb" +
    "ol_0\" ElementName=\"TEST_TEST.IMAGE_GRAPHICS\" X=\"0\" Y=\"0\" HorizontalAlignment=\"Le" +
    "ft\" VerticalAlignment=\"Top\" ElementWidth=\"740\" ElementHeight=\"773\" BaseRect=\"0,0" +
    ",640,480\">\r\n        <aaGraphic:aaSymbol.Resources></aaGraphic:aaSymbol.Resources" +
    ">\r\n        <aaGraphic:aaLine x:Name=\"line_1_1615022685\" ElementName=\"line1\" Abso" +
    "luteOrigin=\"90,20\" BaseRect=\"30,20,120,0\" BoundingRect=\"30,20,120,0\" BaseRectLoc" +
    "al=\"30,20,120,0\" Start=\"30,20\" End=\"150,20\" HVLine=\"false\" ControlPointsRatio=\"0" +
    ",0 1,0\" RatioX=\"0.5\" LineOffsetY=\"0\">\r\n            <aaGraphic:aaLine.LineStyleDa" +
    "ta>\r\n                <aaGraphic:aaLineStyleData>\r\n                    <aaGraphic" +
    ":aaLineStyleData.LineStyle>\r\n                        <aaGraphic:aaLineStyle>\r\n  " +
    "                          <aaGraphic:aaLineStyle.LineColor>\r\n                   " +
    "             <aaGraphic:aaFillStyle>\r\n                                    <aaGra" +
    "phic:aaFillStyle.SolidFill>\r\n                                        <aaGraphic:" +
    "aaSolidFill Color1=\"#FF000000\"></aaGraphic:aaSolidFill>\r\n                       " +
    "             </aaGraphic:aaFillStyle.SolidFill>\r\n                               " +
    " </aaGraphic:aaFillStyle>\r\n                            </aaGraphic:aaLineStyle.L" +
    "ineColor>\r\n                        </aaGraphic:aaLineStyle>\r\n                   " +
    " </aaGraphic:aaLineStyleData.LineStyle>\r\n                </aaGraphic:aaLineStyle" +
    "Data>\r\n            </aaGraphic:aaLine.LineStyleData>\r\n            <aaGraphic:aaL" +
    "ine.Resources></aaGraphic:aaLine.Resources>\r\n        </aaGraphic:aaLine>\r\n      " +
    "  <aaGraphic:aaLine x:Name=\"line_2_1615022688\" ElementName=\"line2\" AbsoluteOrigi" +
    "n=\"90,30\" BaseRect=\"30,30,120,0\" BoundingRect=\"30,30,120,0\" BaseRectLocal=\"30,30" +
    ",120,0\" Start=\"30,30\" End=\"150,30\" HVLine=\"true\" ControlPointsRatio=\"0,0 1,0\" Ra" +
    "tioX=\"0.5\" LineOffsetY=\"0\">\r\n            <aaGraphic:aaLine.LineStyleData>\r\n     " +
    "           <aaGraphic:aaLineStyleData>\r\n                    <aaGraphic:aaLineSty" +
    "leData.LineStyle>\r\n                        <aaGraphic:aaLineStyle>\r\n            " +
    "                <aaGraphic:aaLineStyle.LineColor>\r\n                             " +
    "   <aaGraphic:aaFillStyle>\r\n                                    <aaGraphic:aaFil" +
    "lStyle.SolidFill>\r\n                                        <aaGraphic:aaSolidFil" +
    "l Color1=\"#FF000000\"></aaGraphic:aaSolidFill>\r\n                                 " +
    "   </aaGraphic:aaFillStyle.SolidFill>\r\n                                </aaGraph" +
    "ic:aaFillStyle>\r\n                            </aaGraphic:aaLineStyle.LineColor>\r" +
    "\n                        </aaGraphic:aaLineStyle>\r\n                    </aaGraph" +
    "ic:aaLineStyleData.LineStyle>\r\n                </aaGraphic:aaLineStyleData>\r\n   " +
    "         </aaGraphic:aaLine.LineStyleData>\r\n            <aaGraphic:aaLine.Resour" +
    "ces></aaGraphic:aaLine.Resources>\r\n        </aaGraphic:aaLine>\r\n        <aaGraph" +
    "ic:aaRectangle x:Name=\"rectangle_3_325221091\" ElementName=\"rectangle1\" AbsoluteO" +
    "rigin=\"90,45\" BaseRect=\"30,40,120,10\" BoundingRect=\"30,40,120,10\" BaseRectLocal=" +
    "\"30,40,120,10\">\r\n            <aaGraphic:aaRectangle.LineStyleData>\r\n            " +
    "    <aaGraphic:aaLineStyleData>\r\n                    <aaGraphic:aaLineStyleData." +
    "LineStyle>\r\n                        <aaGraphic:aaLineStyle>\r\n                   " +
    "         <aaGraphic:aaLineStyle.LineColor>\r\n                                <aaG" +
    "raphic:aaFillStyle>\r\n                                    <aaGraphic:aaFillStyle." +
    "SolidFill>\r\n                                        <aaGraphic:aaSolidFill Color" +
    "1=\"#FF000000\"></aaGraphic:aaSolidFill>\r\n                                    </aa" +
    "Graphic:aaFillStyle.SolidFill>\r\n                                </aaGraphic:aaFi" +
    "llStyle>\r\n                            </aaGraphic:aaLineStyle.LineColor>\r\n      " +
    "                  </aaGraphic:aaLineStyle>\r\n                    </aaGraphic:aaLi" +
    "neStyleData.LineStyle>\r\n                </aaGraphic:aaLineStyleData>\r\n          " +
    "  </aaGraphic:aaRectangle.LineStyleData>\r\n            <aaGraphic:aaRectangle.Fil" +
    "lStyleData>\r\n                <aaGraphic:aaFillStyleData>\r\n                    <a" +
    "aGraphic:aaFillStyleData.FillStyle>\r\n                        <aaGraphic:aaFillSt" +
    "yle>\r\n                            <aaGraphic:aaFillStyle.SolidFill>\r\n           " +
    "                     <aaGraphic:aaSolidFill></aaGraphic:aaSolidFill>\r\n          " +
    "                  </aaGraphic:aaFillStyle.SolidFill>\r\n                        </" +
    "aaGraphic:aaFillStyle>\r\n                    </aaGraphic:aaFillStyleData.FillStyl" +
    "e>\r\n                    <aaGraphic:aaFillStyleData.UnFillStyle>\r\n               " +
    "         <aaGraphic:aaFillStyle>\r\n                            <aaGraphic:aaFillS" +
    "tyle.SolidFill>\r\n                                <aaGraphic:aaSolidFill Color1=\"" +
    "#FF000000\"></aaGraphic:aaSolidFill>\r\n                            </aaGraphic:aaF" +
    "illStyle.SolidFill>\r\n                        </aaGraphic:aaFillStyle>\r\n         " +
    "           </aaGraphic:aaFillStyleData.UnFillStyle>\r\n                </aaGraphic" +
    ":aaFillStyleData>\r\n            </aaGraphic:aaRectangle.FillStyleData>\r\n         " +
    "   <aaGraphic:aaRectangle.Resources></aaGraphic:aaRectangle.Resources>\r\n        " +
    "</aaGraphic:aaRectangle>\r\n        <aaGraphic:aaRoundRectangle x:Name=\"roundrecta" +
    "ngle_4_57526850\" ElementName=\"roundrectangle1\" AbsoluteOrigin=\"90,65\" BaseRect=\"" +
    "30,60,120,10\" BoundingRect=\"30,60,120,10\" BaseRectLocal=\"30,60,120,10\">\r\n       " +
    "     <aaGraphic:aaRoundRectangle.LineStyleData>\r\n                <aaGraphic:aaLi" +
    "neStyleData>\r\n                    <aaGraphic:aaLineStyleData.LineStyle>\r\n       " +
    "                 <aaGraphic:aaLineStyle>\r\n                            <aaGraphic" +
    ":aaLineStyle.LineColor>\r\n                                <aaGraphic:aaFillStyle>" +
    "\r\n                                    <aaGraphic:aaFillStyle.SolidFill>\r\n       " +
    "                                 <aaGraphic:aaSolidFill Color1=\"#FF000000\"></aaG" +
    "raphic:aaSolidFill>\r\n                                    </aaGraphic:aaFillStyle" +
    ".SolidFill>\r\n                                </aaGraphic:aaFillStyle>\r\n         " +
    "                   </aaGraphic:aaLineStyle.LineColor>\r\n                        <" +
    "/aaGraphic:aaLineStyle>\r\n                    </aaGraphic:aaLineStyleData.LineSty" +
    "le>\r\n                </aaGraphic:aaLineStyleData>\r\n            </aaGraphic:aaRou" +
    "ndRectangle.LineStyleData>\r\n            <aaGraphic:aaRoundRectangle.FillStyleDat" +
    "a>\r\n                <aaGraphic:aaFillStyleData>\r\n                    <aaGraphic:" +
    "aaFillStyleData.FillStyle>\r\n                        <aaGraphic:aaFillStyle>\r\n   " +
    "                         <aaGraphic:aaFillStyle.SolidFill>\r\n                    " +
    "            <aaGraphic:aaSolidFill></aaGraphic:aaSolidFill>\r\n                   " +
    "         </aaGraphic:aaFillStyle.SolidFill>\r\n                        </aaGraphic" +
    ":aaFillStyle>\r\n                    </aaGraphic:aaFillStyleData.FillStyle>\r\n     " +
    "               <aaGraphic:aaFillStyleData.UnFillStyle>\r\n                        " +
    "<aaGraphic:aaFillStyle>\r\n                            <aaGraphic:aaFillStyle.Soli" +
    "dFill>\r\n                                <aaGraphic:aaSolidFill Color1=\"#FF000000" +
    "\"></aaGraphic:aaSolidFill>\r\n                            </aaGraphic:aaFillStyle." +
    "SolidFill>\r\n                        </aaGraphic:aaFillStyle>\r\n                  " +
    "  </aaGraphic:aaFillStyleData.UnFillStyle>\r\n                </aaGraphic:aaFillSt" +
    "yleData>\r\n            </aaGraphic:aaRoundRectangle.FillStyleData>\r\n            <" +
    "aaGraphic:aaRoundRectangle.Resources></aaGraphic:aaRoundRectangle.Resources>\r\n  " +
    "      </aaGraphic:aaRoundRectangle>        \r\n        <aaGraphic:aaCalendarContro" +
    "l x:Name=\"calendar_30_1580911735\" ElementName=\"calendarcontrol1\" AbsoluteOrigin=" +
    "\"434.5,666.5\" BaseRect=\"300,560,269,213\" BoundingRect=\"300,560,269,213\" BaseRect" +
    "Local=\"300,560,269,213\" LineWeight=\"0\" TitleFillColor=\"#FF0A246A\" TitleTextColor" +
    "=\"#FFFFFFFF\" TrailingTextColor=\"#FF808080\" DefaultValue=\"05/17/2018\" Value=\"5/17" +
    "/2018 12:00:00 AM\">\r\n            <aaGraphic:aaCalendarControl.FillStyleData>\r\n  " +
    "              <aaGraphic:aaFillStyleData>\r\n                    <aaGraphic:aaFill" +
    "StyleData.FillStyle>\r\n                        <aaGraphic:aaFillStyle>\r\n         " +
    "                   <aaGraphic:aaFillStyle.SolidFill>\r\n                          " +
    "      <aaGraphic:aaSolidFill></aaGraphic:aaSolidFill>\r\n                         " +
    "   </aaGraphic:aaFillStyle.SolidFill>\r\n                        </aaGraphic:aaFil" +
    "lStyle>\r\n                    </aaGraphic:aaFillStyleData.FillStyle>\r\n           " +
    "         <aaGraphic:aaFillStyleData.UnFillStyle>\r\n                        <aaGra" +
    "phic:aaFillStyle>\r\n                            <aaGraphic:aaFillStyle.SolidFill>" +
    "\r\n                                <aaGraphic:aaSolidFill Color1=\"#FF000000\"></aa" +
    "Graphic:aaSolidFill>\r\n                            </aaGraphic:aaFillStyle.SolidF" +
    "ill>\r\n                        </aaGraphic:aaFillStyle>\r\n                    </aa" +
    "Graphic:aaFillStyleData.UnFillStyle>\r\n                </aaGraphic:aaFillStyleDat" +
    "a>\r\n            </aaGraphic:aaCalendarControl.FillStyleData>\r\n            <aaGra" +
    "phic:aaCalendarControl.TextStyleData>\r\n                <aaGraphic:aaTextStyleDat" +
    "a>\r\n                    <aaGraphic:aaTextStyleData.TextColor>\r\n                 " +
    "       <aaGraphic:aaFillStyle>\r\n                            <aaGraphic:aaFillSty" +
    "le.SolidFill>\r\n                                <aaGraphic:aaSolidFill Color1=\"#F" +
    "F000000\"></aaGraphic:aaSolidFill>\r\n                            </aaGraphic:aaFil" +
    "lStyle.SolidFill>\r\n                        </aaGraphic:aaFillStyle>\r\n           " +
    "         </aaGraphic:aaTextStyleData.TextColor>\r\n                    <aaGraphic:" +
    "aaTextStyleData.Font>\r\n                        <aaGraphic:aaFont />\r\n           " +
    "         </aaGraphic:aaTextStyleData.Font>\r\n                </aaGraphic:aaTextSt" +
    "yleData>\r\n            </aaGraphic:aaCalendarControl.TextStyleData>\r\n            " +
    "<aaGraphic:aaCalendarControl.Resources>\r\n                <aaGraphic:aaCalendarAn" +
    "imation x:Key=\"Animation1\" SubmitType=\"Immediately\"></aaGraphic:aaCalendarAnimat" +
    "ion>\r\n            </aaGraphic:aaCalendarControl.Resources>\r\n        </aaGraphic:" +
    "aaCalendarControl>\r\n        <aaGraphic:aaListBox x:Name=\"listbox_31_1852253955\" " +
    "ElementName=\"listbox1\" AbsoluteOrigin=\"660,85\" BaseRect=\"590,20,140,130\" Boundin" +
    "gRect=\"590,20,140,130\" BaseRectLocal=\"590,20,140,130\" LineWeight=\"0\">\r\n         " +
    "   <aaGraphic:aaListBox.FillStyleData>\r\n                <aaGraphic:aaFillStyleDa" +
    "ta>\r\n                    <aaGraphic:aaFillStyleData.FillStyle>\r\n                " +
    "        <aaGraphic:aaFillStyle>\r\n                            <aaGraphic:aaFillSt" +
    "yle.SolidFill>\r\n                                <aaGraphic:aaSolidFill></aaGraph" +
    "ic:aaSolidFill>\r\n                            </aaGraphic:aaFillStyle.SolidFill>\r" +
    "\n                        </aaGraphic:aaFillStyle>\r\n                    </aaGraph" +
    "ic:aaFillStyleData.FillStyle>\r\n                    <aaGraphic:aaFillStyleData.Un" +
    "FillStyle>\r\n                        <aaGraphic:aaFillStyle>\r\n                   " +
    "         <aaGraphic:aaFillStyle.SolidFill>\r\n                                <aaG" +
    "raphic:aaSolidFill Color1=\"#FF000000\"></aaGraphic:aaSolidFill>\r\n                " +
    "            </aaGraphic:aaFillStyle.SolidFill>\r\n                        </aaGrap" +
    "hic:aaFillStyle>\r\n                    </aaGraphic:aaFillStyleData.UnFillStyle>\r\n" +
    "                </aaGraphic:aaFillStyleData>\r\n            </aaGraphic:aaListBox." +
    "FillStyleData>\r\n            <aaGraphic:aaListBox.TextStyleData>\r\n               " +
    " <aaGraphic:aaTextStyleData>\r\n                    <aaGraphic:aaTextStyleData.Tex" +
    "tColor>\r\n                        <aaGraphic:aaFillStyle>\r\n                      " +
    "      <aaGraphic:aaFillStyle.SolidFill>\r\n                                <aaGrap" +
    "hic:aaSolidFill Color1=\"#FF000000\"></aaGraphic:aaSolidFill>\r\n                   " +
    "         </aaGraphic:aaFillStyle.SolidFill>\r\n                        </aaGraphic" +
    ":aaFillStyle>\r\n                    </aaGraphic:aaTextStyleData.TextColor>\r\n     " +
    "               <aaGraphic:aaTextStyleData.Font>\r\n                        <aaGrap" +
    "hic:aaFont />\r\n                    </aaGraphic:aaTextStyleData.Font>\r\n          " +
    "      </aaGraphic:aaTextStyleData>\r\n            </aaGraphic:aaListBox.TextStyleD" +
    "ata>\r\n            <aaGraphic:aaListBox.Resources>\r\n                <aaGraphic:aa" +
    "ListBoxAnimation x:Key=\"Animation1\" UseValuesAsCaptions=\"False\" State=\"Static\" A" +
    "llowDuplicates=\"True\" SubmitType=\"Immediately\"></aaGraphic:aaListBoxAnimation>\r\n" +
    "            </aaGraphic:aaListBox.Resources>\r\n        </aaGraphic:aaListBox>\r\n  " +
    "  </aaGraphic:aaSymbol>\r\n</UserControl>";
    
    XElement x = XElement.Parse(xml);
    XNamespace aaGraphic = "clr-namespace:ArchestrA.Visualization.GraphicLibraryRuntime;assembly=ArchestrA.Visualization.GraphicLibraryRuntime";
    string outerXml = x.Descendants(aaGraphic + "aaListBox").First().ToString();

Оцени полезность:

12   голосов , оценка 4.167 из 5