`
scm002
  • 浏览: 316983 次
社区版块
存档分类
最新评论

lxml.etree

 
阅读更多

http://www.cnblogs.com/bluescorpio/archive/2013/06/09/3127964.html

http://blog.csdn.net/u012063703/article/details/51754665

http://www.jianshu.com/p/f446663c970f

 

1. 判断是否有子元素或子节点

使用len(element),这更清楚,也不容易犯错。

>>> print(etree.iselement(root))  # test if it's some kind of Element
True
>>> if len(root):                 # test if it has children
...     print("The root element has children")
The root element has children
 2. How to get childcode
element.getchildren()
3  Create xml with encoding="utf-8"
print et.tostring(tree, xml_declaration=True, encoding="utf-8")
 
例子:

#!/usr/bin/env python

 

import os

import sys

import re

 

from lxml import etree

 

 

 

tree1 = etree.parse(r'default.xml')

root1 = tree1.getroot()

 

root = etree.Element('manifest')

 

#for child in root1.iter('project'):

for child in root1:

  if not isinstance(child, etree._Comment):

    if len(child):

      child_node = etree.SubElement(root, child.tag, child.attrib)

      for node in child.getchildren():

        etree.SubElement(child_node, node.tag, node.attrib)

        print node.tag, node.attrib

    else:

      etree.SubElement(root, child.tag, child.attrib)

  else:

    root.append(etree.Comment(child.text))

 

tree = etree.ElementTree(root)

tree.write('mytest.xml', pretty_print=True, xml_declaration=True, encoding="utf-8", method='xml')

 

"""

remote = etree.Element('remote', fetch="..", name="MTK", review="10.75.10.90:8080")

default = etree.Element('default', {'remote': "MTK", 'revision': "E1/MTK/MT6737M/8.0/dev", 'sync-c': 'true', 'sync-j': '4'})

#root.append(remote)

#root.append(default)

root.extend([remote, default])

"""

 

"""

etree.SubElement(root, 'remote', fetch="..", name="MTK", review="10.75.10.90:8080")

etree.SubElement(root, 'default', {'remote': "MTK", 'revision': "E1/MTK/MT6737M/8.0/dev", 'sync-c': 'true', 'sync-j': '4'})

etree.SubElement(root, 'project', groups="device,fugu,broadcom_pdk,pdk", name="MTK/device/asus/fugu", path="LINUX/android/device/asus/fugu", revision="22d134832ae86e1df7f2ceee7ce0fbb56155050f", upstream="MTK/MT6737M/8.0/PRS.2017.06.10.10.00")

 

 

xml_data = etree.tostring(root, pretty_print=True, xml_declaration=True, encoding="utf-8")

print xml_data

print 'write xml...'

tree = etree.ElementTree(root)

tree.write('mytest.xml', pretty_print=True, xml_declaration=True, encoding="utf-8")

#with open('your.xml', 'w') as f:

#  f.write(xml_data)

"""
 
分享到:
评论

相关推荐

    lxml详解.rar

    4. **XML序列化**:使用`lxml.etree.tostring()`将元素树转换为字符串,或`lxml.etree.ElementTree.write()`写入文件。 5. **XML和HTML互转**:lxml能方便地在XML和HTML间转换,适用于处理不规范的HTML文档。 ### ...

    from lxml import etree

    child1 = etree.SubElement(root, 'child1', attr='value1') child2 = etree.SubElement(root, 'child2') etree.SubElement(child2, 'grandchild') xml_doc = etree.tostring(root, encoding='unicode') # 解析XML...

    Python3.5以上版本lxml导入etree报错的解决方案

    # 使用html.etree.HTML()方法解析HTML字符串 doc = html.etree.HTML(html_string) # 进一步处理文档... return doc if __name__ == '__main__': html_string = "<html><body><h1>Hello World!</h1></body>...

    解决lxml没有etree的方法

    先 pip uninstall lxml 卸载模块 ,下载压缩包, 然后去找到C:\Program Files\Anaconda3\Lib\site-packages 模块路径,解压就可以了

    windows-64bit-python3.5-lxml.rar

    lxml提供了丰富的API,包括ElementTree API(兼容Python的内置xml.etree.ElementTree模块)和更加强大的ElementPath API,以及XPath和XSLT支持。例如,我们可以这样创建和操作XML文档: ```python from lxml import...

    lxml.rar,解决lxml包没有etree的问题

    item = etree.SubElement(root, 'item', attr='value') item.text = 'Data' tree = etree.ElementTree(root) tree.write('output.xml', pretty_print=True) ``` 6. **XPath**:`lxml`支持XPath 1.0,提供了...

    Python库 | lxml-4.3.4-cp36-cp36m-manylinux1_i686.whl

    例如,使用`lxml.etree.XPath()`可以编写XPath表达式,`lxml.cssselect.CSSSelector()`则用于CSS选择。 **3. HTML清理和规范化** - `lxml.html`模块提供了HTML清理功能,能够修复不规范的HTML代码,使其符合标准。...

    python lxml中etree的简单应用

    通过以上实例,可以看出 `lxml.etree` 中的 `etree.HTML()` 和 `etree.tostring()` 函数在处理 HTML 文档时的强大能力。这两个函数能够帮助开发者轻松地解析和提取所需的信息,从而提高数据处理的效率和准确性。无论...

    python第三方库:lxml

    lxml库通过`lxml.etree.XPath()`函数提供对XPath的支持,可以用来定位元素、获取属性值、甚至执行计算。 例如,以下代码使用XPath选择文档中所有的`<item>`元素: ```python from lxml import etree tree = etree....

    python lxml==4.8.0

    例如,可以使用`lxml.etree.fromstring()`函数将XML字符串解析成Element对象,然后通过Element对象进行操作。对于HTML,有`lxml.html`模块,它提供了类似的方法来解析和操作HTML文档。 3. **XPath支持**: lxml...

    lxml win32 python

    - **XSLT转换**:`lxml`提供了`lxml.etree.XSLT()`函数,用于应用XSLT样式表进行XML文档转换。 4. **注意事项** - **依赖问题**:在某些情况下,`lxml`可能还需要`libxml2`和`libxslt`的DLL文件,这些文件应与...

    京东商城海量数据爬取python源码

    3.lxml.etree.HTML() 3.xpath是网页数据的一种方法 (实操) 能帮助我们去乱七八糟的网页里面找到我们需要的数据。 1.把你需要的数据先列出来 2.把鼠标放在需要的数据上面 右键检查 复制它的xpath 3

    9.7. xml.etree.ElementTree — ElementTree XML的接口(翻译).pdf

    Python是一种流行的编程语言,它通过内置的xml.etree.ElementTree模块为处理XML文档提供了一种简单而有效的方法。 xml.etree.ElementTree模块是Python的标准库中的一个组件,它提供了一种处理XML数据的机制。它允许...

    Python库 | lxml-2.1.4.win32-py2.6.exe

    1. **XML解析**:`lxml.etree`模块提供了解析XML文档的功能,包括DOM(Document Object Model)树的构建,XPath查询,以及DTD(Document Type Definition)验证。 2. **HTML处理**:`lxml.html`模块可以解析HTML...

    使用python对OpenStreetMap地图数据进行清洗

    import lxml.etree as ET from collections import defaultdict import matplotlib.pyplot as plt %matplotlib inline import pprint import re import codecs import json filename="map.osm" import re from ...

    lxmldoc python xml 解析器

    - **模块对比**:`lxml.etree`与`lxml.objectify`之间的区别。 - **性能优化**:如何提高应用性能的一些建议。 - **安装问题**: - **版本要求**:建议使用的`libxml2`和`libxslt`版本。 - **二进制构建**:如何...

    lxml(python操作xml文件的库)

    `lxml`设计上兼容了Python标准库中的`xml.etree.ElementTree`,这意味着大部分`ElementTree`的API在`lxml`中也能正常工作。 总的来说,`lxml`库是Python中处理XML和HTML的强大工具,无论是在数据解析、文档生成...

    XML文件的读写.rar

    3. 序列化为文件:完成XML结构构建后,使用`lxml.etree.ElementTree.write()`方法将XML结构写入文件。可以指定编码和格式化选项,如`pretty_print=True`来美化输出。 4. 动态更新:如果XML文件已经存在,可以先读取...

Global site tag (gtag.js) - Google Analytics