当我尝试从批处理脚本解析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>
批处理scrpit:
for /f "tokens=3 delims=><" %%j in ('type %SETTINGSPATH% ^| find "<user>"') do set user=%%j
此代码应该从XML读取用户值,这只是" JR",在某些计算机上,我得到了此值。但是有些机器没有显示此值并显示此错误。
请指南。
用批处理解析XML通常是有问题的,而且总是有风险。有效记录的有效XML可以合法地重新格式化,以破坏您的解析器。但是,如果您真的想继续使用批处理...
当您在()子句中具有未播放和未引用的<
字符时,就会发生错误消息。"<user>"
已经引用,因此通常不应该是问题。问题必须源于%SETTINGSPATH%
中包含的值。该值必须具有未引用且未阐明的<
,或者该值中必须有奇数的引号。引号的奇数会导致<user>
不再引用。
唯一的其他可能性是您尚未向我们显示所有代码,并且错误正在发生其他位置。
这将永远无法可靠。这样做的原因是您正在尝试使用错误的工具来处理XML。XML文档具有相同语义含义的无限文本表示。结果,这里的空间或新线路不会更改文档的语义,但是即使将输入处理为XML作为XML的所有工具都将继续正常工作,但即使所有处理输入的工具也会破坏您的脚本。使用PowerShell或VBScript/JScript,您可以在其中使用XML功能,否则您将始终遇到这样的问题,因为您不应该使用刷子驱动螺钉。