pythonetreexml
A. python xml.etree 中findall('./item')问题
./item 与 item 区别
对于find操作来说,这二者没区别
如果是其他方法,类似C里面的system,那么就有区别了.
后者会查找env path,不一定能找到`pwd`/item
望点赞
B. python xml.etree.element从xml文件获取文档标题的格式,比如几级标题
import xml.etree.ElementTree as ET
tree = ET.ElementTree('doc1.xml') ;读取doc1.xml
root = tree.getroot()
for child in root: ;遍历所有子结束,输出结点的标签,属性
print(child.tag, child.attrib)
C. python解析xml:xml.etree.ElementTree似乎存在bug
<?xml version = "1.0" encoding = "utf-8"?>
<root>
<body name="lyc">
<age>110</age>
</body>
<body name = "l" age = "10">
</body>
</root>
D. python2.7中lxml安装后无法导入etree求教
pythonlxml
在lxml文件夹下etree是pyd后缀,是libxml2,libxslt这两个没安装好么
用正则吧。用过xpath 感觉还是正则靠谱
先看安装lxml的时候有错误信息
E. lxml4.3怎么调用etree 怎么用
解决办法:
import lxml.htmletree = lxml.html.etree12
这样就可以使用etree了
F. python lxml etree怎么甩
lxml是Python语言中处理XML和HTML功能最丰富,最易于使用的库。
lxml是libxml2和libxslt两个C库的Python化绑定,它的独特之处在于兼顾了这些库的速度和功能完整性,同时还具有Python API的简介。兼容ElementTree API,但是比它更优越。
用libxml2编程就像是一个异于常人的陌生人的令人惊恐的拥抱,它看上去可以满足你一切疯狂的梦想,但是你的内心深处一直在警告你,你有可能会以最糟糕的方式遭殃,所以就有了lxml。
这是一个用lxml.etree来处理XML的教程,它简单的概述了ElementTree API的主要概念,同时有一些能让你的程序生涯更轻松的简单的提高。
首先是导入lxml.etree的方式:
fromlxmlimportetree
为了协助代码的可移植性,本教程中的例子很明显可以看出,一部分API是lxml.etree在ElementTree API(由Fredrik Lundh 的ElementTree库定义)的基础上的扩展。
Element是ElementTree API的主要容器类,大部分XML tree的功能都是通过这个类来实现的,Element的创建很容易:
root=etree.Element("root")
element的XML tag名通过tag属性来访问
>>>printroot.tag
root
许多Element被组织成一个XML树状结构,创建一个子element并添加进父element使用append方法:
>>>root.append(etree.Element("child1"))
还有一个更简短更有效的方法:the SubElement,它的参数和element一样,但是需要父element作为第一个参数:
>>>child2=etree.SubElement(root,"child2")
>>>child3=etree.SubElement(root,"child3")
可以序列化你创建的树:
>>>print(etree.tostring(root,pretty_print=True))
<root>
<child1/>
<child2/>
<child3/>
</root>
为了更方便直观的访问这些子节点,element模仿了正常的Python链:
>>>child=root[0]>>>print(child.tag)
child1
>>>print(len(root))
>>>root.index(root[1])#lxml.etreeonly!
>>>children=list(root)>>>forchildinroot:...print(child.tag)child1child2
child3
>>>root.insert(0,etree.Element("child0"))>>>start=root[:1]>>>end=root[-1:]>>>print(start[0].tag)child0>>>print(end[0].tag)child3
还可以根据element的真值看其是否有孩子节点:
ifroot:#thisnolongerworks!
print("Therootelementhaschildren")
用len(element)更直观,且不容易出错:
>>>print(etree.iselement(root))#testifit'ssomekindofElement
True
>>>iflen(root):#testifithaschildren
...print("Therootelementhaschildren")
Therootelementhaschildren
还有一个重要的特性,原文的句子只可意会,看例子应该是能看懂什么意思吧。
>>>forchildinroot:...print(child.tag)child0child1child2child3>>>root[0]=root[-1]#移动了element>>>forchildinroot:...print(child.tag)child3child1child2>>>l=[0,1,2,3]>>>l[0]=l[-1]>>>l[3,1,2,3]
>>>rootisroot[0].getparent()#lxml.etreeonly!.etree,'sstandardlibrary:>>>fromimportdeep>>>element=etree.Element("neu")>>>element.append(deep(root[1]))>>>print(element[0].tag)child1>>>print([c.tagforcinroot])['child3','child1','child2']
XML支持属性,创建方式如下:
>>>root=etree.Element("root",interesting="totally")
>>>etree.tostring(root)
b'<rootinteresting="totally"/>'
属性是无序的键值对,所以可以用element类似于字典接口的方式处理:
>>>print(root.get("interesting"))
totally
>>>print(root.get("hello"))
None
>>>root.set("hello","Huhu")
>>>print(root.get("hello"))
Huhu
>>>etree.tostring(root)
b'<rootinteresting="totally"hello="Huhu"/>'
>>>sorted(root.keys())
['hello','interesting']
>>>forname,valueinsorted(root.items()):
...print('%s=%r'%(name,value))
hello='Huhu'
interesting='totally'
如果需要获得一个类似dict的对象,可以使用attrib属性:
>>>attributes=root.attrib
>>>print(attributes["interesting"])
totally
>>>print(attributes.get("no-such-attribute"))
None
>>>attributes["hello"]="GutenTag"
>>>print(attributes["hello"])
GutenTag
>>>print(root.get("hello"))
GutenTag
既然attrib是element本身支持的类似dict的对象,这就意味着任何对element的改变都会影响attrib,反之亦然。这还意味着只要element的任何一个attrib还在使用,XML树就一直在内存中。通过如下方法,可以获得一个独立于XML树的attrib的快照:
>>>d=dict(root.attrib)
>>>sorted(d.items())
[('hello','GutenTag'),('interesting','totally')]
G. 在python中用ElementTree提取XML中的内容
fromxml.etreeimportElementTree
str_=''#文件中的xml字符串
xml_obj=ElementTree.fromstring(str_)
然后通过对xml_obj进行操作,xml_obj本身也是一个xml节点回。
xml_obj.getchildren() 获取根节点的子节点列表答
xml_obj.findall(node_name) 搜索xml_obj节点下名为node_name的所有节点
xml_obj.tag 节点的标签
xml_obj.text 节点的文本信息 ,本例中可以获得K这个文本。
xml_obj.tail 节点尾部的文本信息,本例中获取Channel Regulator KCR1 Suppresses Heart Rhythm by Molating the Pacemaker Current I
就需要搜索到标签为sup的节点,然后取节点的tail文本获得。
H. python lxml中etree.html和etree.parse有什么区别
etree.parse直接接受来一个文档,源按照文档结构解析
import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml')
root = tree.getroot()
etree.html可以解析html文件:
page = etree.HTML(html.lower().decode('utf-8'))
hrefs = page.xpath(u"//a")
for href in hrefs:
print href.attrib
I. 如何使用Python和xml.etree.ElementTree解析xml文件获取其节点
基于文本文档(Markdown) 设想好需要的基本需要的表、字段、类型;内
使用 Rails Migration 随着功能容的开发逐步创建表;
随着细节功能的开发、需求,逐步增加字段,删除字段,或者调整字段类型;
第一个 Release 的时候清理 Migrations 合并成一个;
随着后期的改动,逐步增加、修改、删除字段或表。
基本上我的所有项目都是这么搞的,这和项目是否复杂无关。
所以我前面为什么说思路需要转变。
J. python怎么向已经存在的xml文件中追加填入数据
直接操作文件肯定不现实,只能先使用python自带模块xml.etree 解析xml,然后找到对应的节点把数据添加进去,重新写入文件。