python解析xml文件操作实例
admin
2023-07-31 02:12:22
0

本文实例讲述了python解析xml文件操作的实现方法。分享给大家供大家参考。具体方法如下:

xml文件内容如下:

 
 
 
   
    sample xml thing 
   
   
     
       
        ma 
       
       
        xiaoju 
       
     
     
      Springs Widgets, Inc. 
     
   
   
     
      First 
     
     
      I think widgets are greate.You should buy lots of them forom 
       
        Spirngy Widgts, Inc 
       
     
   
 

python代码:

from xml.dom import minidom, Node 
import re, textwrap 
 
class SampleScanner: 
  \"\"\"\"\"\" 
 
  def __init__(self, doc): 
    \"\"\"Constructor\"\"\" 
    assert(isinstance(doc, minidom.Document)) 
    for child in doc.childNodes: 
      if child.nodeType == Node.ELEMENT_NODE and \\ 
        child.tagName == \"book\": 
        self.handle_book(child) 
         
  def handle_book(self, node): 
     
    for child in node.childNodes: 
      if child.nodeType != Node.ELEMENT_NODE: 
        continue 
      if child.tagName == \"title\": 
        print \"Book titile is:\", self.gettext(child.childNodes) 
      if child.tagName == \"author\": 
        self.handle_author(child) 
      if child.tagName == \"chapter\": 
        self.handle_chapter(child) 
         
  def handle_chapter(self, node): 
    number = node.getAttribute(\"number\") 
    print \"number:\", number 
    title_node = node.getElementsByTagName(\"title\") 
    print \"title:\", self.gettext(title_node) 
     
    for child in node.childNodes: 
      if child.nodeType != Node.ELEMENT_NODE: 
        continue 
      if child.tagName == \"para\": 
        self.handle_chapter_para(child) 
         
  def handle_chapter_para(self, node): 
    company = \"\" 
    company = self.gettext(node.getElementsByTagName(\"company\")) 
    print \"chapter:para:company\", company 
     
         
  def handle_author(self, node): 
    for child in node.childNodes: 
      if child.nodeType != Node.ELEMENT_NODE: 
        continue 
      if child.tagName == \"name\": 
        self.handle_author_name(child) 
      if child.tagName == \"affiliation\": 
        print \"affiliation:\", self.gettext(child.childNodes) 
         
  def handle_author_name(self, node): 
    first = \"\" 
    last = \"\" 
    for child in node.childNodes: 
      if child.nodeType != Node.ELEMENT_NODE: 
        continue 
      if child.tagName == \"first\": 
        first = self.gettext(child.childNodes) 
      if child.tagName == \'last\': 
        last = self.gettext(child.childNodes) 
         
    print \"firstname:%s,lastname:%s\" % (first, last) 
     
         
  def gettext(self, nodelist): 
    retlist = [] 
    for node in nodelist: 
      if node.nodeType == Node.TEXT_NODE: 
        retlist.append(node.wholeText) 
      elif node.hasChildNodes: 
        retlist.append(self.gettext(node.childNodes)) 
         
    return re.sub(\'\\s+\', \" \", \'\'.join(retlist)) 
   
         
if __name__==\"__main__\": 
  doc = minidom.parse(\"simple.xml\") 
  sample = SampleScanner(doc) 

希望本文所述对大家的Python程序设计有所帮助。

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...