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

ここに 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 に答える
0

XSLT 1 しか使用できないと更新したため、この投稿を参照してください: XSLT 1.0 または XPath を使用して HTML 文字列を操作する方法

これは少し複雑ですが、次のとおりです。

<、>、および & を置き換えるには、3 回クリーンアップする必要があります...

開始するための 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>
于 2012-06-08T02:34:45.983 に答える