从批处理脚本解析XML时出乎意料的字符



当我尝试从批处理脚本解析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功能,否则您将始终遇到这样的问题,因为您不应该使用刷子驱动螺钉。

最新更新