当我尝试从批处理脚本
解析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>
batch scrpit:
for /f "tokens=3 delims=><" %%j in ('type %SETTINGSPATH% ^| find "<user>"') do set user=%%j
这段代码应该从XML中读取用户值,这只是“JR”,在某些机器上我得到这个值;但有些机器没有显示此值并显示此错误。
请指导。
答案 0 :(得分:2)
使用批处理解析XML通常会产生问题并且总是存在风险。记录的有效XML可以通过多种方式合法地重新格式化,从而破坏解析器。但如果你真的想继续使用批处理......
如果IN()子句中有未转义且未加引号的<
字符,则会出现该错误消息。 "<user>"
已经被引用,因此通常不应该是一个问题。问题必须源于%SETTINGSPATH%
中包含的价值。值必须具有未加引号且未转义的<
,或者值中必须包含奇数引号。奇数引号会导致<user>
不再被引用。
唯一的另一种可能性是你没有向我们展示你的所有代码,并且错误发生在其他地方。
答案 1 :(得分:0)
这永远不会可靠。原因是您尝试使用错误的工具处理Xml。 Xml文档中有无数个文本表示具有相同的语义含义。因此,这里的空格或新行不会改变文档的语义,但会破坏您的脚本,即使以Xml处理输入的所有工具都将继续正常工作。使用PowerShell或vbscript / jscript你可以使用Xml功能,否则你总会遇到这样的问题,因为你不应该使用刷子来驱动螺丝。