-1

太字のこの< A313 >1のような要素は、タグ名がA313、A312、pa123etc...のいずれかである場合は削除する必要があります。

入力はこんな感じ

 <para>
text........
</para>
   <A1234>
 </A1234>
 <para-numbar>
  this contain some information
  </para-number>
  <A141>
  </A141>

出力は

<para>
      text........
 </para>

   <para-numbar>
   this contain some information
   </para-number>
4

2 に答える 2

0

このメソッドは、文字列に数値が含まれるかどうかを定義します。

public static class Extensions
{
    public static bool HasNumbers(this string s)
    {
        foreach (char c in s)
        {
            if (char.IsDigit(c))
            {
                return true;
            }
        }

        return false;
    }
}

リストから番号付きの要素を削除するには:

List<string> list;
list.RemoveAll(str => str.HasNumbers());
于 2012-09-14T08:55:33.370 に答える
0

これと同じくらい簡単です:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="*[not(name() = translate(name(),'0123456789',''))]"/>
</xsl:stylesheet>

この変換がドキュメントに適用されると、次のような数字を含むいくつかの要素名

<nums>
  <num>01</num>
  <num>02</num>
  <A314>xxx</A314>
  <b>
    <c221/>
  </b>
  <num>03</num>
  <num>04</num>
  <num>05</num>
  <num>06</num>
  <num>07</num>
  <num>08</num>
  <num>09</num>
  <num>10</num>
</nums>

必要な正しい結果が生成されます。この場合は次のようになります。

<nums>
   <num>01</num>
   <num>02</num>
   <b/>
   <num>03</num>
   <num>04</num>
   <num>05</num>
   <num>06</num>
   <num>07</num>
   <num>08</num>
   <num>09</num>
   <num>10</num>
</nums>

説明

の適切な使用:

  1. アイデンティティルールとそのオーバーライド。

  2. 標準のXPathtranslate()関数。

于 2012-09-14T12:36:16.623 に答える