python字符串解析不解析换行符

时间:2014-03-26 18:29:26

标签: python xml string parsing minidom

在python中我试图使用minidom从xml标签中读取字符串。但是无法检测到解析后的字符串的换行符。这是我要解析的xml标记:

<Command>setlocal
C:\t\gfx\CMake2.8\bin\cmake.exe --check-stamp-file "C:\Source\Workspace\generate.stamp"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd</Command>

我的minidom解析代码是:

nodes = dom.getElementsByTagName("Command")
for j in range(len(nodes)):
  path = nodes[j].childNodes[0].nodeValue
  if path.find('\n') : 
    print '\n found'

但这并不起作用,尽管字符串中有&#39; \ n&#39; &#34; setlocal&#34;,&#34;:cmEnd&#34;,&#34;:cmErrorLevel&#34;结束时的字符等等 我还尝试对输入字符串进行编码:

path = path.encode('utf-8')

然后运行上面的代码,但这也不起作用。 我也试过find('\\n')但是没有工作。

有没有人能解决我的问题?

1 个答案:

答案 0 :(得分:1)

刚看到这个,因为我正在寻找类似问题的解决方案。

我将xml复制并粘贴到doc中并将其保存为xml文件。

然后我做了这个

>>> xml = ('command.xml')
>>> xml_file = open(xml).read()
>>> xml_file 
'<Command>setlocal\nC:\\t\\gfx\\CMake2.8\\bin\\cmake.exe --check-stamp-file  "C:\\Source\\Workspace\\generate.stamp"\nif %errorlevel% neq 0 goto :cmEnd\n:cmEnd\nendlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto :cmDone\n:cmErrorLevel\nexit /b %1\n:cmDone\nif %errorlevel% neq 0 goto :VCEnd</Command>'
>>> if '\n' in xml_file:
...     print '\\n found'
... 
\n found
>>> xml_file.count('\n')
8

这是你想要的吗?如果你已经解决了,那你使用了什么解决方案?