2017-03-10 9 views
0

<datafield tag="036E"></datafield>の間のすべてを抽出しようとしています。バッチfindstrでXMLの2つのタグ間のすべてのコンテンツを抽出するには?

<datafield tag="036E"> 
    <subfield code="a">Collana del dialogo ebraico-cristiano</subfield> 
    <subfield code="l">1</subfield> 
    </datafield> 

それは[036E">].*[</datafield>]ようなバッチではfindstrと正規表現でそれを行うことは可能ですか?

+4

として極めて有用で質問されていない「ことが可能です」答えは単に「はい」または「いいえ」 "とにかく、 'findstr'はテキストを行ごとに検索するので役に立たない。しかし、 'cmd' /バッチファイルはフォーマットを理解せず、データを通常のテキストとして扱うため、JavaScript、VBScript、PowerShellのようなXMLをネイティブにサポートする言語をお勧めします。 – aschipfl

+0

このタイプについては、あなたの以前の質問の1つで処理します。 http://stackoverflow.com/questions/41106654/how-can-i-get-the-content-of-the-subfield-with-batch-script – Squashman

+0

はい、可能です。しかし、それがあなたが探しているものなら、簡単なライナーではありません。まず、最初のタグを持つ行のファイルを解析する必要があります。次に、最初の行のファイルを最初のタグの後ろにある終了タグで再度解析する必要があります。次に、ファイルを再度解析し、すべての一致するデータを取得する必要があります。常に***あなたのコードを表示*** – abelenky

答えて

0

XML対応ツールを使用してください。例えば、(私は維持するために起こるツール)xshで、あなたはこのソリューションは、あなたが要求したとして、「バッチます。findstrとXMLでの二つのタグの間のすべての内容を抽出」、およびデータで正しく動作

open file.xml ; 
ls //datafield[@tag='036E'] ; 
+0

あなたの文書を正しく読んでいますか?彼らはそれを使用するcygwinをインストールする必要がありますか? – Squashman

+0

ストロベリーPerlで十分でしょう;-) – choroba

+1

おそらく、さまざまな依存関係を持つ多くの同様のツールがあります。あなたに合ったものを選んでください。ジョブには適切なツールを使用してください。 – choroba

0

を書くことができますあなたは投稿:タグが別々の行所望のデータを囲むに配置されていない場合

@echo off 
setlocal EnableDelayedExpansion 

set "start=" 
set "lines=" 

rem Get start and number of lines with findstr 
for /F "delims=:" %%a in ('findstr /N "</*datafield" input.txt') do (
    if not defined start (set "start=%%a" 
    ) else if not defined lines set /A "lines=%%a-start-1" 
) 

for /F "skip=%start% delims=" %%a in (input.txt) do (
    echo %%a 
    set /A lines-=1 
    if !lines! equ 0 goto exitLoop 
) 
:exitLoop 

しかし、この解決策は失敗します...

+0

1つのデータフィールドが入力txtに存在する場合にのみ機能します。しかし、私が持っている多くのデータフィールドがある場合はありません: Abrirse a la vida una ayuda para los momentos difícilesbasada EN EL注意深Yラcompasión <サブフィールドコード= "H">ペドロモレノ <データフィールドタグ= "036E"> <サブフィールドコード= ""> Micrologus <サブフィールドコード= "L "> 25 <データフィールドタグ=" 036E "> <サブフィールドコード=" "> Bibliotecaterae –

+0

さて、このプログラムは、記述された問題を解決し、投稿されたサンプルデータを使用します。プログラムが_non requested_要件を満たしていることは非常に困難です!この例では、行の位置が重要であり、コメントに投稿したデータにそのような位置は表示されないので、質問を編集して_new_仕様を追加し、適切なサンプルデータを含めてください。また、そのようなデータに基づいて必要な出力の例を含めてください。その後、アドバイスとしてここに新しいコメントを投稿してください... – Aacini

関連する問題