unexpected character while parsing XML from batch script

天大地大妈咪最大 提交于 2019-12-12 01:26:33

问题


I am getting this error when I am trying to parse XML from batch Script

 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

This code is supposed to read user value from XML which is just "JR" and on some machines I am getting this values; but some machines are not showing this value and showing this error.

Please guide.


回答1:


Parsing XML with batch is often problematic and always risky. A valid XML documented could be legitamately reformatted in any number of ways that would break you parser. But if you really want to continue to use batch...

That error message occurs when you have an unescaped and unquoted < character in your IN() clause. The "<user>" is already quoted, so that normally should not be a problem. The problem must stem from the value contained in %SETTINGSPATH%. Either the value must have an unquoted and unescaped <, or there must be an odd number of quotes in the value. The odd number of quotes would cause the <user> to no longer be quoted.

The only other possibility is that you have not shown us all your code, and the error is occuring someplace else.




回答2:


This will never work reliably. The reason for this is that you are trying to process Xml using wrong tools. There is an infinite number of textual representations of an Xml document that have the same semantical meaning. As a result a space here or a new line there will not change the semantics of your document but will break your script even though all the tools that process the input as Xml will continue to work correctly. Use PowerShell or vbscript/jscript where you can use Xml capabilities or you will always have problems like this since you should not use a brush to drive screws.



来源:https://stackoverflow.com/questions/12956694/unexpected-character-while-parsing-xml-from-batch-script

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!