0

我有这个 xml:

<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

4

2 回答 2

0

Since you have updated saying you can only use XSLT 1 - See this post: How to use XSLT 1.0 or XPath to manipulate an HTML string

This is a little complex but:

To replace <, >, and & you'll have to clean it three times...

Here is some XSLT to get you started:

<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>
于 2012-06-08T02:34:45.983 回答
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);
     }               
于 2012-06-08T02:56:47.423 回答