0

バッチ スクリプトから XML を解析しようとすると、このエラーが発生します。

 error : 
 < was unexpected at this time.

xml:

<driver type=".dbdriver">
        <attributes>localhost;1521;XE;false</attributes>
        <driverType>Oracle thin</driverType>
      </driver>
      <password>7ECE6B7E7D2AF514C55BAE8B3A6B51E7</password>
      <user>JR</user>

バッチスクリプト:

for /f "tokens=3 delims=><" %%j in ('type %SETTINGSPATH% ^| find "<user>"') do set user=%%j

このコードは、"JR" だけの XML からユーザー値を読み取ることになっており、一部のマシンではこの値を取得しています。ただし、一部のマシンではこの値が表示されず、このエラーが表示されます。

ガイドしてください。

4

2 に答える 2

2

XMLをバッチで解析することは、多くの場合問題があり、常にリスクがあります。文書化された有効なXMLは、パーサーを壊すようなさまざまな方法で合法的に再フォーマットされる可能性があります。しかし、本当にバッチを使い続けたいのなら...

このエラーメッセージは<、IN()句にエスケープされていない引用符で囲まれていない文字がある場合に発生します。は"<user>"すでに引用されているので、通常は問題にはなりません。問題は、に含まれる値に起因する必要があります%SETTINGSPATH%。値には引用符がなくエスケープされていないか、値<に奇数の引用符が含まれている必要があります。引用符の数が奇数の場合、は引用符<user>で囲まれなくなります。

他の唯一の可能性は、すべてのコードを表示しておらず、エラーが別の場所で発生していることです。

于 2012-10-18T16:04:03.447 に答える
0

これでは確実に動作しません。これは、間違ったツールを使用して Xml を処理しようとしていることが原因です。同じ意味を持つ Xml ドキュメントのテキスト表現は無数にあります。結果として、ここにスペースや改行があると、ドキュメントのセマンティクスは変わりませんが、入力を Xml として処理するすべてのツールが引き続き正しく機能しても、スクリプトが壊れます。Xml機能を使用できるPowerShellまたはvbscript / jscriptを使用しないと、ブラシを使用してネジを打ち込むべきではないため、常にこのような問題が発生します。

于 2012-10-18T15:25:40.223 に答える