[Resuelto] ¿Como escapar un CDATA en un XML?

Iniciado por Eleкtro, 9 Junio 2013, 12:04 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

Necesito ayuda con este xml para escapar el CDATA de la variable del RegEx (No quiero usar comillas dobles porque en otros códigos no puedo hacerlo),
no sé nada de XML y estoy perdido, muy perdido, no sé si esto tiene solución, ¿Que puedo hacer?:

Código (xml) [Seleccionar]
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
 <CodeSnippet Format="1.0.0">
   <Header>
     <SnippetTypes>
       <SnippetType>Expansion</SnippetType>
     </SnippetTypes>
     <Title>
        Regex match htm html
     </Title>
     <Author>Elektro H@cker</Author>
     <Description>
        Expresión regular para encontrar urls.htm
     </Description>
     <HelpUrl>
     </HelpUrl>
     <Shortcut>
     </Shortcut>
   </Header>
   <Snippet>
     <Declarations>
       <Literal Editable="true">
         <ID>aaaaaaaaa</ID>
         <ToolTip>sfsdf</ToolTip>
         <Default>
         </Default>
         <Function>sdfsdf</Function>
       </Literal>
     </Declarations>
     <Code Language="vb"><![CDATA[


 


       Dim RegEx As New System.Text.RegularExpressions.Regex( _
       <a><![CDATA[(http://|https://|www).*\.html?]]></a>.Value)





]]></Code>
   </Snippet>
 </CodeSnippet>
</CodeSnippets>



Según esto al final del comentario a mi no me ha quedado muy claro si hay algún "trick" para mezclar los CDATA y que funcione :S : http://stackoverflow.com/questions/223652/is-there-a-way-to-escape-a-cdata-end-token-in-xml

...¿Alguna ayuda?








Eleкtro

Ya lo pude solucionar (bueno, más bien me lo solucionaron):

Código (xml) [Seleccionar]
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
      <Title>
         Regex match htm html
      </Title>
      <Author>Elektro H@cker</Author>
      <Description>
         Expresión regular para encontrar urls.htm
      </Description>
      <HelpUrl>
      </HelpUrl>
      <Shortcut>
      </Shortcut>
    </Header>
    <Snippet>
      <Declarations>
        <Literal Editable="true">
          <ID>aaaaaaaaa</ID>
          <ToolTip>sfsdf</ToolTip>
          <Default>
          </Default>
          <Function>sdfsdf</Function>
        </Literal>
        <Literal Editable="false">
          <ID>cdataend</ID>
          <ToolTip>Part of the CDATA end tag.</ToolTip>
          <Default>&gt;</Default>
        </Literal>
      </Declarations>
      <Code Language="vb"><![CDATA[

#Region " RegEx Match htm-html "

    ' [ RegEx Match htm-html Function ]
    '
    ' // By Elektro H@cker
    '
    ' Examples :
    ' Dim str As String = <a><![CDATA[href="http://www.mp3crank.com/the-rolling-stones/deluxe-edition.htm"]]$cdataend$</a>.Value
    ' MsgBox(RegEx_Match_htm_html(str)) ' Result: http://www.mp3crank.com/the-rolling-stones/deluxe-edition.htm

    Private Function RegEx_Match_htm_html(ByVal str As String, Optional ByVal Group As Int32 = 0) As String

        ' Match criteria:
        '
        ' http://text.htm
        ' http://text.html
        ' https://text.htm
        ' https://text.html
        ' www.text.htm
        ' www.text.html

        Dim RegEx As New System.Text.RegularExpressions.Regex( _
        <a><![CDATA[(http://|https://|www).*\.html?]]$cdataend$</a>.Value)

        Return RegEx.Match(Str).Groups(Group).ToString

    End Function

#End Region

]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>


Saludos