2012-06-08 3 views
0

У меня есть этот XML:Xpath выбрать спасся узел с узлом

<text> 
    blah blah &lt;strong&gt; hello &lt;/strong&gt; more text &lt;strong&gt;hello again&lt;/strong&gt; blah blah 
</text> 

Как выбрать текст в сильных тегов, которые были сбежавших с &lt и &gt

В этом примере выбор должен быть:

  1. привет
  2. привет снова

обновления должен быть XSLT 1.0

+0

Там нет «сильных меток» Там нет разметки (элемента или других узлов, кроме одного текста дочернего узла элемента с именем 'Text'. Поэтому этот вопрос не относится к XPath или XSLT. Вам нужно повторно разобрать уничтоженную разметку, а затем вы можете использовать XPath (внутри или снаружи XSLT). –

ответ

0

Поскольку вы обновили говорят, что вы можете использовать только XSLT 1 - См этот пост: How to use XSLT 1.0 or XPath to manipulate an HTML string

Это немного сложный, но:

Для замены <, > и & вам придется его чистить три раза ...

Вот некоторые XSLT, чтобы вы начали:

<xsl:variable name="cleanXML"> 
    <xsl:call-template name="SubstringReplace"> 
    <xsl:with-param name="stringIn"> 
     <xsl:call-template name="SubstringReplace"> 
     <xsl:with-param name="stringIn"> 
      <xsl:call-template name="SubstringReplace"> 
      <xsl:with-param name="stringIn"> 
       <xsl:call-template name="SubstringReplace"> 
       <xsl:with-param name="stringIn" select="$theXml"/> 
       <xsl:with-param name="substringIn" select="'&amp;lt;'"/> 
       <xsl:with-param name="substringOut" select="'&lt;'"/> 
       </xsl:call-template> 
      </xsl:with-param> 
      <xsl:with-param name="substringIn" select="'&amp;gt;'"/> 
      <xsl:with-param name="substringOut" select="'&gt;'"/> 
      </xsl:call-template> 
     </xsl:with-param> 
     <xsl:with-param name="substringIn" select="'&amp;amp;'"/> 
     <xsl:with-param name="substringOut" select="'&amp;'"/> 
     </xsl:call-template> 
    </xsl:with-param> 
    </xsl:call-template> 
</xsl:variable> 
0

здесь является реализация C#.

пространств имен используются

using System.Xml 
using System.Web 

осуществление

 //Read xml file 
    string xmlText = "<text>blah blah &lt;strong&gt; hello &lt;/strong&gt; more text &lt;strong&gt;hello again&lt;/strong&gt; blah blah</text>"; 
    System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); 
    doc.LoadXml(HttpUtility.HtmlDecode(xmlText)); 
    XmlNodeList Nodes = doc.GetElementsByTagName("strong"); 

    List<string> nodeValues= new List<string>(); 
    foreach (XmlNode Node in Nodes) 
    { 
     nodeValues.Add(Node.InnerText); 
    }    
Смежные вопросы