2016-07-19 17 views
0

私はすでに検索機能を使用していましたが、私の質問に対する答えは見つかりませんでした。XML(Notepad ++)の特定のタグ間のタグを削除する

<Task name="1B"> 
<Person type ="XX" name="YY" height="ZZ"/> 
<Person type ="XX" name="YY" height="ZZ"/> 
<Person type ="XX" name="YY" height="ZZ"/> 
</Task> 

<Task name="1C"> 
<Person type ="XX" name="YY" height="ZZ"/> 
<Person type ="XX" name="YY" height="ZZ"/> 
<Person type ="XX" name="YY" height="ZZ"/> 
</Task> 

は、今私は名前「1B」とオープンと終了タグの間のすべてのタグでタグ++メモ帳を経由して、削除したい:

は、私は、次の(例)のようなXML構造を有しています。メモ帳には方法がありますか?私は既にRegEx Patternで試してみましたが、正しい方法を得られませんでした。

+0

検索 '<タスク名=「1B」>を*? <\/Task> '何も置き換えないでください。 –

+0

動作しません。私のXMLにテキストを見つけることができません。 – Phyllis

答えて

1

HTMLで正規表現を使用することは、多くの問題と不必要な質問につながるため、強くお勧めします。 RegEx match open tags except XHTML self-contained tagsを参照してください。 XSLTを使用してXMLを変換することは、本当に必要なツールです。

remove_xml_tag.xslサンプル名でUTF8エンコードされたファイルを作成し、そこにこれを貼り付けます

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

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

<xsl:template match="Task[@name='1B']"/> 
</xsl:stylesheet> 

XSLは、各ノードと属性(node()|@*)を処理し、それはnameTask要素が等しい属性を検出したとき1B"Task[@name='1B']")それは出力に書き込まれません。

次に、XMLツールプラグイン - >XSL変換を実行します。あなたは、表示されます。

enter image description here

が右側に...ボタンをクリックし、XSLファイルを参照します。

変換ボタンをクリックします。

あなたが入れ子になったTaskのノードがない場合にのみ動作します不正な形式のXML持っている場合のフォールバックソリューション:。

<Task\s+name="1B">[^<]*(?:<(?!/Task>)[^<]*)*</Task> 
+0

私はそれを試してみます、ありがとう! :) – Phyllis

関連する問題