2つの異なるXMLタグの間でテキストを読み取り、その値をテキストファイルに書き込むバッチファイルを作成しようとしています。以下のように...バッチファイルを使用してxmlタグ間でテキストをコピー
<JobInformation>
<JOB>
<JobName>17Jan_125thou_DEC_B_FullSheet</JobName>
<Date>17 Jan 2017 11:24:34</Date>
<CDI>192.168.0.29</CDI>
<Circumference unit='mm'>1289.94mm</Circumference>
<Laser-Energy unit='J/sqcm'>3.2</Laser-Energy>
<XL-Workflow>XL125_45</XL-Workflow>
<Knife-Type>45 Degree</Knife-Type>
<PREVIEW- IMAGE>"./images/17Jan_125thou_DEC_B_FullSheet/17Jan_125thou_DEC_B_FullSheet.jpg< /PREVIEW-IMAGE>
</JOB>
<Plate>
<PlateName>DECx125_20115</PlateName>
<Type>PLATE</Type>
<PlateWidth unit='mm'>2032.0</PlateWidth>
<PlateHeight unit='mm'>1254.94</PlateHeight>
<TotalSize unit='sqm'>2.55</TotalSize>
<Waste unit='sqm'>0.285</Waste>
</Plate>
:
XMLは次のようになります。
タグ<PlateName></PlateName>
と<Waste></Waste>
の間で情報を抽出したいと思います。
また、バッチプログラミング以外の方法がある場合は、ご案内ください。また、私は特定のフォルダにたくさんのXMLファイルを読み込もうとしていますが、それらはすべて同じタグを持っています。
以下のコードはタグPlateName
なくWaste
からデータを読み取ります
@echo OFF
del output.txt
for /f "delims=" %%i in ('findstr /i /c:"<PlateName>" *.xml') do call :job1 "%%i"
for /f "delims=" %%i in ('findstr /i :"<Waste>" *.xml') do call :job2 "%%i"
goto :eof
:job1
set line=%1
set line=%line:/=%
set line=%line:<=+%
set line=%line:>=+%
set line=%line:*+PlateName+=%
set line=%line:+=&rem.%
echo.%line%>>output.txt
:job2
set line2=%1
set line2=%line2:/=%
set line2=%line2:<=+%
set line2=%line2:>=+%
set line2=%line2:*+Waste+=%
set line2=%line2:+=&rem.%
echo.%line2%>>output.txt
:eof
それのように出力が得られます。この中にさらに
DECx125_20115
"17Jan_125thou_DEC_B_FullSheet.xml:&rem.PlateName&rem.DECx125_20115&rem.PlateName&rem."
、どのように私は最初の数を読むためにコードを編集することができますタグ間の値の文字?たとえば、313719_V4_DSpotOrange(31 Mar 2017 16:50:17)で私は313719を読みたいだけです。
PowerShellには、強力なXML解析機能が組み込まれています。私はこれを使用することを強くお勧めします。 GoogleのPowerShellには、XMLを解析するための記事がたくさんあります。 –
2番目の 'findstr'コマンドラインにタイプミスがあります:' findstr/i/c: "" ' - '/c'オプションがありません。 ':job2'と上記の行の間に' goto:eof'を挿入してください!あなたのコードは、XMLファイルには現れないリテラル文字列 ''を探しています。 '' ... –
aschipfl
@SharvilRavalの部分だけがあります。あなたはコメントにコード更新を入れません。あなたの質問を編集し、コメントを削除してください。 – Squashman