帮忙看看这个关于xml解析的问题

帮忙看看这个关于xml解析的问题

有一个 xml文件 我将他简约了一下:
<samples>
<?xml version="1.0" ?><samples>
        <dd code="ad" desc="Sample scripts for managing Active Directory and Active Directory objects." name="Active Directory">
                <dd code="computer" desc="Sample scripts for managing computer accounts and computer roles within Active Directory." name="Computer Accounts"><vb n="0" name="Copy an Active Directory Computer Account">' Copy an Active Directory Computer Account

' Windows Server 2003 : Yes
' Windows XP : Yes
' Windows 2000 : Yes
' Windows NT 4.0 : Yes
' Windows 98 : Yes


</vb><vb n="1" name="Create a Computer Account For a Specific User">' Create a Computer Account For a Specific User

' Windows Server 2003 : Yes
' Windows XP : Yes
' Windows 2000 : Yes
' Windows NT 4.0 : Yes
' Windows 98 : Yes




</vb><vb n="2" name="Delete a Computer Account">' Delete a Computer Account

' Windows Server 2003 : Yes
' Windows XP : Yes
' Windows 2000 : Yes
' Windows NT 4.0 : Yes
' Windows 98 : Yes


</vb><vb n="4" name="Enable a Global Catalog Server">' Enable a Global Catalog Server

' Windows Server 2003 : Yes
' Windows XP : Yes
' Windows 2000 : Yes
' Windows NT 4.0 : Yes
' Windows 98 : Yes

Next
</vb></dd>
        </dd>
</samples>

我想知道如何用python 解析出
</vb><vb n="2" name="Delete a Computer Account">' Delete a Computer Account

' Windows Server 2003 : Yes
' Windows XP : Yes
' Windows 2000 : Yes
' Windows NT 4.0 : Yes
' Windows 98 : Yes

这一段出来 我用了教程上的例子 搞不定啊
那位高手帮我写一段能够实现的简单代码 一下是教程上的简单代码
from xml.dom import minidom
xmldoc = minidom.parse('C:lizi.xml')
print xmldoc.toxml()
grammarNode = xmldoc.firstChild #获取子节点
print grammarNode.childNodes[2].toxml()

帮忙修改下啊 谢谢

ps:有没有办法根据 标签里 n="2"  这个来识别呢 偶对xml不太熟悉

要努力呀,python开发效率确实高,但是用的人确不多呀
感觉问题提的有些“问题”,

QUOTE:
我想知道如何用python 解析出
</vb><vb n="2" name="Delete a Computer Account">' Delete a Computer Account

' Windows Server 2003 : Yes
' Windows XP : Yes
' Windows 2000 : Yes
' Windows NT 4.0 : Yes
' Windows 98 : Yes

上述内容应该不是一个合适处理的文本块吧。为什么不是里面的内容。另,如果想解析的字符串比较简单,不用xml的库也是可以,直接使用正则式,甚至使用字符串查找都是有可能来做的。


QUOTE:
原帖由 limodou 于 2007-11-23 13:53 发表
感觉问题提的有些“问题”,



上述内容应该不是一个合适处理的文本块吧。为什么不是里面的内容。另,如果想解析的字符串比较简单,不用xml的库也是可以,直接使用正则式,甚至使用字符串查找都是有可能来 ...

谢谢limodou的回复
确实是要提取里面的内容
Windows Server 2003 : Yes
' Windows XP : Yes
' Windows 2000 : Yes
' Windows NT 4.0 : Yes
' Windows 98 : Yes
那么用什么解决办法呢 如果按照xml库的方法
或按照字符串的查找方法
使用正则式

[Copy to clipboard] [ - ]
CODE:
a = 'xml内容'
import re
s = re.compile(r'<vb .*?>(.*?)</vb>', re.DOTALL)
t = s.findall(a)

t为结果。
谢谢啊
那么这样的效率和用xml模块的效率那个高呢 那个xml文件还是挺大的
我想是正则式要高,因为xml的解析比正则式可要复杂多了。你可以做一个性能测试。而且正则式在Python中是C实现的。xml则(特别是dom解析方式)是python的封装要慢一些。不过如果你使用elementtree的话(2.5自带)它有C的版本cElementTree速度应该不错。
多谢limodou 耐心的解答 我会去尝试的
收藏了,不过感觉正则表达式虽然简练,但很难记
limodou 的方法可以打印出我想要的内容
但是发现格式全没有了 好像是个list

['\' Enable a Global Catalog Server\n\n\' Windows Server 2003 : Yes\n\' Windows XP : Yes\n\' Windows 2000 : Yes\n\' Windows NT 4.0 : Yes\n\' Windows 98 : Yes\n\nstrComputer = "atl-dc-01"\n \nConst NTDSDSA_OPT_IS_GC = 1\n \nSet objRootDSE = GetObject("LDAP://" & strComputer & "/RootDSE"\nstrDsServiceDN = objRootDSE.Get("dsServiceName"\nSet objDsRoot  = GetObject _\n    ("LDAP://" & strComputer & "/" & strDsServiceDN)\nintOptions = objDsRoot.Get("options"\n \nIf (intOptions And NTDSDSA_OPT_IS_GC) = FALSE Then\n    objDsRoot.Put "options" , intOptions Or NTDSDSA_OPT_IS_GC\n    objDsRoot.Setinfo\nEnd If\n']

如上所示:
空格的地方打印出来就是 /n 字符了

请问有什么办法可以保持原来的格式打印呢