精华内容
下载资源
问答
  • I have this xml model.So I have to add some node (see the text commented) to this file.How I can do it?I have writed this partial code but it doesn't work:xmldoc=minidom.parse(directory)child = xmldoc...

    I have this xml model.

    So I have to add some node (see the text commented) to this file.

    How I can do it?

    I have writed this partial code but it doesn't work:

    xmldoc=minidom.parse(directory)

    child = xmldoc.createElement("map")

    for node in xmldoc.getElementsByTagName("Environment"):

    node.appendChild(child)

    Thanks in advance.

    解决方案

    I downloaded your sample xml file and your code works fine. Your problem is most likely with the line: xmldoc=minidom.parse(directory), should this not be the path to the file you are trying to parse not to a directory? The parse() function parses an XML file it does not automatically parse all the XML files in a given directory.

    If you change your code to something like below this should work fine:

    xmldoc=minidom.parse("directory/model_template.xml")

    child = xmldoc.createElement("map")

    for node in xmldoc.getElementsByTagName("Environment"):

    node.appendChild(child)

    If you then execute the statement: print xmldoc.toxml() you will see that the map element has indeed been added to the Environment element: .

    展开全文
  • 关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码。这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件。一、什么是xml?xml即可扩展标记...

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码。这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件。

    一、什么是xml?

    xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

    abc.xml

    <?xml version="1.0" encoding="utf-8"?>

    4

    Python

    测试

    Zope

    Ok ,从结构上,它很像我们常见的HTML超文本标记语言。但他们被设计的目的是不同的,超文本标记语言被设计用来显示数据,其焦点是数据的外观。它被设计用来传输和存储数据,其焦点是数据的内容。

    那么它有如下特征:

    首先,它是有标签对组成,

    标签可以有属性:

    标签对可以嵌入数据:abc

    标签可以嵌入子标签(具有层级关系):

    二、获得标签属性

    那么,下面来介绍如何用python来读取这种类型的文件。

    #coding=utf-8

    import xml.dom.minidom

    #打开xml文档

    dom = xml.dom.minidom.parse('abc.xml')

    #得到文档元素对象

    root = dom.documentElement

    print root.nodeName

    print root.nodeValue

    print root.nodeType

    print root.ELEMENT_NODE

    mxl.dom.minidom 模块被用来处理xml文件,所以要先引入。

    xml.dom.minidom.parse() 用于打开一个xml文件,并将这个文件对象dom变量。

    documentElement 用于得到dom对象的文档元素,并把获得的对象给root

    每一个结点都有它的nodeName,nodeValue,nodeType属性。

    nodeName为结点名字。

    nodeValue是结点的值,只对文本结点有效。

    nodeType是结点的类型。catalog是ELEMENT_NODE类型

    现在有以下几种:

    'ATTRIBUTE_NODE'

    'CDATA_SECTION_NODE'

    'COMMENT_NODE'

    'DOCUMENT_FRAGMENT_NODE'

    'DOCUMENT_NODE'

    'DOCUMENT_TYPE_NODE'

    'ELEMENT_NODE'

    'ENTITY_NODE'

    'ENTITY_REFERENCE_NODE'

    'NOTATION_NODE'

    'PROCESSING_INSTRUCTION_NODE'

    'TEXT_NODE'

    三、获得子标签

    现在要获得catalog的子标签以的标签name

    <?xml version="1.0" encoding="utf-8"?>

    4

    Python

    测试

    Zope

    对于知道元素名字的子元素,可以使用getElementsByTagName方法获取:

    #coding=utf-8

    import xml.dom.minidom

    #打开xml文档

    dom = xml.dom.minidom.parse('abc.xml')

    #得到文档元素对象

    root = dom.documentElement

    bb = root.getElementsByTagName('maxid')

    b= bb[0]

    print b.nodeName

    bb = root.getElementsByTagName('login')

    b= bb[0]

    print b.nodeName

    如何区分相同标签名字的标签:

    <?xml version="1.0" encoding="utf-8"?>

    4

    Python

    测试

    Zope

    和标签不止一个如何区分?

    #coding=utf-8

    import xml.dom.minidom

    #打开xml文档

    dom = xml.dom.minidom.parse('abc.xml')

    #得到文档元素对象

    root = dom.documentElement

    bb = root.getElementsByTagName('caption')

    b= bb[2]

    print b.nodeName

    bb = root.getElementsByTagName('item')

    b= bb[1]

    print b.nodeName

    root.getElementsByTagName('caption') 获得的是标签为caption 一组标签,b[0]表示一组标签中的第一个;b[2] ,表示这一组标签中的第三个。

    四、获得标签属性值

    <?xml version="1.0" encoding="utf-8"?>

    4

    Python

    测试

    Zope

    和标签是有属性的,如何获得他们的属性?

    #coding=utf-8

    import xml.dom.minidom

    #打开xml文档

    dom = xml.dom.minidom.parse('abc.xml')

    #得到文档元素对象

    root = dom.documentElement

    itemlist = root.getElementsByTagName('login')

    item = itemlist[0]

    un=item.getAttribute("username")

    print un

    pd=item.getAttribute("passwd")

    print pd

    ii = root.getElementsByTagName('item')

    i1 = ii[0]

    i=i1.getAttribute("id")

    print i

    i2 = ii[1]

    i=i2.getAttribute("id")

    print i

    getAttribute方法可以获得元素的属性所对应的值。

    五、获得标签对之间的数据

    <?xml version="1.0" encoding="utf-8"?>

    4

    Python

    测试

    Zope

    标签对之间是有数据的,如何获得这些数据?

    获得标签对之间的数据有多种方法,

    方法一:

    #coding=utf-8

    import xml.dom.minidom

    #打开xml文档

    dom = xml.dom.minidom.parse('abc.xml')

    #得到文档元素对象

    root = dom.documentElement

    cc=dom.getElementsByTagName('caption')

    c1=cc[0]

    print c1.firstChild.data

    c2=cc[1]

    print c2.firstChild.data

    c3=cc[2]

    print c3.firstChild.data

    firstChild 属性返回被选节点的第一个子节点,.data表示获取该节点人数据。

    方法二:

    #coding=utf-8

    from xml.etree import ElementTree as ET

    per=ET.parse('abc.xml')

    p=per.findall('./login/item')

    for oneper in p:

    for child in oneper.getchildren():

    print child.tag,':',child.text

    p=per.findall('./item')

    for oneper in p:

    for child in oneper.getchildren():

    print child.tag,':',child.text

    方法二有点复杂,所引用模块也与前面的不一样,findall用于指定在哪一级标签下开始遍历。

    getchildren方法按照文档顺序返回所有子标签。并输出标签名(child.tag)和标签的数据(child.text)

    其实,方法二的作用不在于此,它核心功能是可以遍历某一级标签下的所有子标签。

    PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:

    展开全文
  • 问题你想读取一个XML文档,对它最一些修改,然后将结果写回XML文档。解决方案使用 xml.etree.ElementTree 模块可以很容易的处理这些任务。 第一步是以通常的方式来解析这个文档。例如,假设你有一个名为 pred.xml 的...

    问题

    你想读取一个XML文档,对它最一些修改,然后将结果写回XML文档。

    解决方案

    使用 xml.etree.ElementTree 模块可以很容易的处理这些任务。 第一步是以通常的方式来解析这个文档。例如,假设你有一个名为 pred.xml 的文档,类似下面这样:

    下面是一个利用 ElementTree 来读取这个文档并对它做一些修改的例子:

    >>> from xml.etree.ElementTree import parse, Element

    >>> doc = parse('pred.xml')

    >>> root = doc.getroot()

    >>> root

    >>> # Remove a few elements

    >>> root.remove(root.find('sri'))

    >>> root.remove(root.find('cr'))

    >>> # Insert a new element after ...

    >>> root.getchildren().index(root.find('nm'))

    1

    >>> e = Element('spam')

    >>> e.text = 'This is a test'

    >>> root.insert(2, e)

    >>> # Write back to a file

    >>> doc.write('newpred.xml', xml_declaration=True)

    >>>

    处理结果是一个像下面这样新的XML文件:

    讨论

    修改一个XML文档结构是很容易的,但是你必须牢记的是所有的修改都是针对父节点元素, 将它作为一个列表来处理。例如,如果你删除某个元素,通过调用父节点的 remove() 方法从它的直接父节点中删除。 如果你插入或增加新的元素,你同样使用父节点元素的 insert() 和 append() 方法。 还能对元素使用索引和切片操作,比如 element[i] 或 element[i:j]

    如果你需要创建新的元素,可以使用本节方案中演示的 Element 类。我们在6.5小节已经详细讨论过了。

    展开全文
  • abc.xml4Python测试ZopeOk ,从结构上,它很像我们常见的HTML超文本标记语言。但他们被设计的目的是不同的,超文本标记语言被设计用来显示数据,其焦点是数据的外观。它被设计用来传输和存储数据,其焦点是数据的内容...

    一、什么是xml?

    xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

    abc.xml

    <?xml version="1.0" encoding="utf-8"?>

    4

    Python

    测试

    Zope

    Ok ,从结构上,它很像我们常见的HTML超文本标记语言。但他们被设计的目的是不同的,超文本标记语言被设计用来显示数据,其焦点是数据的外观。它被设计用来传输和存储数据,其焦点是数据的内容。

    那么它有如下特征:

    首先,它是有标签对组成,

    标签可以有属性:

    标签对可以嵌入数据:abc

    标签可以嵌入子标签(具有层级关系):

    二、获得标签属性

    那么,下面来介绍如何用python来读取这种类型的文件。

    #coding=utf-8

    importxml.dom.minidom#打开xml文档

    dom = xml.dom.minidom.parse('abc.xml')#得到文档元素对象

    root =dom.documentElementprintroot.nodeNameprintroot.nodeValueprintroot.nodeTypeprint root.ELEMENT_NODE

    mxl.dom.minidom 模块被用来处理xml文件,所以要先引入。

    xml.dom.minidom.parse() 用于打开一个xml文件,并将这个文件对象dom变量。

    documentElement 用于得到dom对象的文档元素,并把获得的对象给root

    每一个结点都有它的nodeName,nodeValue,nodeType属性。

    nodeName为结点名字。

    nodeValue是结点的值,只对文本结点有效。

    nodeType是结点的类型。catalog是ELEMENT_NODE类型

    现在有以下几种:

    'ATTRIBUTE_NODE'

    'CDATA_SECTION_NODE'

    'COMMENT_NODE'

    'DOCUMENT_FRAGMENT_NODE'

    'DOCUMENT_NODE'

    'DOCUMENT_TYPE_NODE'

    'ELEMENT_NODE'

    'ENTITY_NODE'

    'ENTITY_REFERENCE_NODE'

    'NOTATION_NODE'

    'PROCESSING_INSTRUCTION_NODE'

    'TEXT_NODE'

    三、获得子标签

    现在要获得catalog的子标签以的标签name

    <?xml version="1.0" encoding="utf-8"?>

    4

    Python

    测试

    Zope

    对于知道元素名字的子元素,可以使用getElementsByTagName方法获取:

    #coding=utf-8

    importxml.dom.minidom#打开xml文档

    dom = xml.dom.minidom.parse('abc.xml')#得到文档元素对象

    root =dom.documentElement

    bb= root.getElementsByTagName('maxid')

    b=bb[0]printb.nodeName

    bb= root.getElementsByTagName('login')

    b=bb[0]print b.nodeName

    如何区分相同标签名字的标签:

    <?xml version="1.0" encoding="utf-8"?>

    4

    Python

    测试

    Zope

    和标签不止一个如何区分?

    #coding=utf-8

    importxml.dom.minidom#打开xml文档

    dom = xml.dom.minidom.parse('abc.xml')#得到文档元素对象

    root =dom.documentElement

    bb= root.getElementsByTagName('caption')

    b= bb[2]printb.nodeName

    bb= root.getElementsByTagName('item')

    b= bb[1]print b.nodeName

    root.getElementsByTagName('caption') 获得的是标签为caption 一组标签,b[0]表示一组标签中的第一个;b[2] ,表示这一组标签中的第三个。

    四、获得标签属性值

    <?xml version="1.0" encoding="utf-8"?>

    4

    Python

    测试

    Zope

    和标签是有属性的,如何获得他们的属性?

    #coding=utf-8

    importxml.dom.minidom#打开xml文档

    dom = xml.dom.minidom.parse('abc.xml')#得到文档元素对象

    root =dom.documentElement

    itemlist= root.getElementsByTagName('login')

    item=itemlist[0]

    un=item.getAttribute("username")printun

    pd=item.getAttribute("passwd")printpd

    ii= root.getElementsByTagName('item')

    i1=ii[0]

    i=i1.getAttribute("id")printi

    i2= ii[1]

    i=i2.getAttribute("id")print i

    getAttribute方法可以获得元素的属性所对应的值。

    五、获得标签对之间的数据

    <?xml version="1.0" encoding="utf-8"?>

    4

    Python

    测试

    Zope

    标签对之间是有数据的,如何获得这些数据?

    获得标签对之间的数据有多种方法,

    方法一:

    #coding: utf-8

    import sys

    import xml.dom.minidom

    f=open('a.txt','w')

    old=sys.stdout #将当前系统输出储存到一个临时变量中

    sys.stdout=f #输出重定向到文件

    dom = xml.dom.minidom.parse("2.xml")

    root = dom.documentElement

    itemlist = root.getElementsByTagName('caption')

    print itemlist

    item2 = itemlist[1]

    print item2.firstChild.data.encode("utf-8")

    print item2.firstChild.nodeValue.encode("utf-8")

    print itemlist[1].childNodes[0].nodeValue.encode("gbk")

    print itemlist[1].childNodes[0].nodeValue.encode("gbk") ---输出中文

    firstChild 属性返回被选节点的第一个子节点,.data表示获取该节点数据。

    方法二:

    #coding=utf-8

    from xml.etree importElementTree as ET

    per=ET.parse('abc.xml')

    p=per.findall('./login/item')for oneper inp:for child inoneper.getchildren():print child.tag,':',child.text

    p=per.findall('./item')for oneper inp:for child inoneper.getchildren():print child.tag,':',child.text

    方法二有点复杂,所引用模块也与前面的不一样,findall用于指定在哪一级标签下开始遍历。

    getchildren方法按照文档顺序返回所有子标签。并输出标签名(child.tag)和标签的数据(child.text)

    其实,方法二的作用不在于此,它核心功能是可以遍历某一级标签下的所有子标签。

    展开全文
  • Xml的格式如下:2016采集卡配置first视频配置拓展配置二、思路从上面xml的格式文件中可以看出,xml内的所有内容均是由标签组成,而标签又可分为自闭和标签和非自闭和标签,自闭和标签是指非成对出现的标签,例如,非...
  • 你可以使用 BeautifulSoup 套件:安裝:pip install bs4如果覺得 html 解析器不敷使用,參考文檔安裝...測試檔:以下是我使用的測試文件:# delete.txt126147# test.xml123abc126abc135abc147abc代碼:from bs4 import ...
  • python操作xml文档

    千次阅读 2010-06-24 17:46:00
    pythonxml.dom代表的是使用dom解析器解析xml文档 其中使用比较方便的应该是minidom库了 现在来看看他们的使用方法使用minidom的parser后产生一个Document object 它包含了解析后的所有的xml文档的信息python xml ...
  • 今天小编就为大家分享一篇对python修改xml文件的节点值方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码。这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件。 一、什么是xml? xml即可扩展...
  • Python 修改xml文件

    2015-03-11 11:21:00
    python实现批量修改xml数据 fromxml.etreeimportElementTreeaset importsys importos importos.path forparent,dirnames,filenamesinos.walk(sys.argv[1...
  • Python操作XML文件--DOM操作XML文档

    千次阅读 2019-04-10 16:56:44
    使用DOM访问XML文件 使用xml.dom.minidom来读取和访问XML文件;xml.dom.minidom是DOM的简化实现版本,比完整版的DOM简单的多,且这个模块也小的多 在使用时需要导入minidom:import xml.dom.minidom (1).得到...
  • Python修改xml文件内容

    万次阅读 2019-08-26 16:50:43
    在使用xml文件的过程中,发现其中filename的名字有问题,所以找了一个代码修改了这个文件。 参考:https://blog.csdn.net/qq_21997625/article/details/86558168 import xml.etree.ElementTree as ET import os ...
  • python修改xml文件内容

    千次阅读 2019-01-19 23:12:11
    import xml.etree.ElementTree as ET def change_xml(xml_path): filelist = os.listdir(xml_path) print(filelist) # 打开xml文档 for xmlfile in filelist: doc = ET.parse(xml_path+xmlfile...
  • I have an XML document that I would like to update after it already contains data.I thought about opening the XML file in "a" (append) mode. The problem is that the new data will be written after the ...
  • Python 修改xml文件内容——批量更改Labelimg标签文件路文件夹名目的原始文件与想要的结果对比图代码实现xml.etree.ElementTree 目的 对一个文件夹中全部Labelimg标记的xml文件中的文件路径以及文件夹名,使用python...
  • Python修改xml文件中的类别名 参考原文:https://blog.csdn.net/weixin_43384257/article/details/100581673?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8&utm_source=...
  • python 修改xml文档 ing

    2019-03-04 16:11:00
    xml文件 <?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>4</maxid> <login username="pytest" passwd='123456'>dasdas <caption>Python</...
  • python操作xml文件

    2016-04-21 14:09:00
    一、什么是xmlxml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 abc.xml <?xml version="1.0" encoding="utf-8"?> <catalog> &...
  • python修改xml文件标签的属性值

    千次阅读 2020-06-12 11:57:39
    首先需要说明的是,直接修改一个xml文件是不太现实的,我们能做的是将xml文件中的所有文本读出来,修改文本的内容之后将其写入到一个新的文件中,只是多了一步写入的过程,其实也挺简单的。 python读写xml有两个包...
  • /usr/bin/env python#-*- coding: utf-8 -*-#@Time : 2019/7/9 15:16#@Author : xiaodaiimportxml.etree.ElementTree as ETfrom lxml importetreefrom tqdm importtqdmimportosdefcreat_xml(xml_file,x,y,w,h)...
  • 使用python操作XML增删改查什么是XML?XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种标记语言,很类似 HTMLXML 的设计宗旨是传输数据,而非显示数据XML 标签没有被预定义。您需要自行定义标签。XML...
  • 本文实例讲述了pythonxml文件操作的方法,分享给大家供大家参考。具体方法如下:要生成的xml文件格式如下:sample xml thingmaxiaojuSprings Widgets, Inc.FirstI think widgets are greate.You should buy lots...
  • Python操作XML文件_02

    2019-09-17 17:19:58
    创建XML文件 创建一个xml文件存储员工(姓名,年龄,城市),老板(姓名,年龄,城市)、账户密码等信息。 <?xml version="1.0" encoding="UTF-8"?> <Class> <staff> <name>张三</...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,231
精华内容 53,692
关键字:

python修改xml文件

python 订阅