2014-03-26 37 views
1

在python中,我想从使用minidom的xml标记中读取字符串。但分析的字符串的换行符不能被检测到。下面是我试图解析XML标签:
python字符串解析不分析换行符

<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' 

但这不起作用,尽管该字符串具有“\ n” “:cmEnd”,“:cmErrorLevel”在“SETLOCAL”,则结束字符等 我也试图编码输入字符串:

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

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

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

+0

尝试'如果'\ n'在路径中:'而不是'如果path.find('\ n')','.find'将赋予换行符在字符串中的位置,如果它存在则不是布尔值。您是否也尝试过打印'path'以确保您期望搜索的blob被正确解析? – CasualDemon

+0

@CasualDemon:是我希望搜索的blob被正确解析。问题是这个字符串没有明确地包含'\ n'字符。 '如果'\ n'在路径中:'不起作用。 – tejas

+0

我的猜测是BLOB包含回车+换行符(Windows行结尾)。 –

回答

1

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

我复制并将您的xml粘贴到文档中,并将其另存为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 

这算哪门子的是你要找的东西?如果您已经解决了问题,那么您使用的解决方案是什么?