精华内容
下载资源
问答
  • I need to get a list of attribute values from child elements in Python.It's easiest to explain with an example.Given some XML like this:I want to be able to do something like:>>> getValues("C...

    I need to get a list of attribute values from child elements in Python.

    It's easiest to explain with an example.

    Given some XML like this:

    I want to be able to do something like:

    >>> getValues("CategoryA")

    ['a1', 'a2', 'a3']

    >>> getValues("CategoryB")

    ['b1', 'b2', 'b3']

    It looks like a job for XPath but I'm open to all recommendations. I'd also like to hear about your favourite Python XML libraries.

    解决方案

    I'm not really an old hand at Python, but here's an XPath solution using libxml2.

    import libxml2

    DOC = """

    """

    doc = libxml2.parseDoc(DOC)

    def getValues(cat):

    return [attr.content for attr in doc.xpathEval("/elements/parent[@name='%s']/child/@value" % (cat))]

    print getValues("CategoryA")

    With result...

    ['a1', 'a2', 'a3']

    展开全文
  • 对于这种工作,我总是推荐^{},因为它有一个非常容易学习的API:from BeautifulSoup import BeautifulStoneSoup as Soupxml = """"""soup = Soup(xml)rpt_side = soup.trdcaptrpt.rptsiderpt_side['txt1'] = '...

    对于这种工作,我总是推荐^{},因为它有一个非常容易学习的API:from BeautifulSoup import BeautifulStoneSoup as Soup

    xml = """

    """

    soup = Soup(xml)

    rpt_side = soup.trdcaptrpt.rptside

    rpt_side['txt1'] = 'Updated'

    rpt_side.pty['id'] = 'Updated'

    print soup

    示例输出:

    编辑:使用xml.etree.ElementTree可以使用以下脚本:from xml.etree import ElementTree as etree

    xml = """

    """

    root = etree.fromstring(xml)

    rpt_side = root.find('RptSide')

    rpt_side.set('Txt1', 'Updated')

    pty = rpt_side.find('Pty')

    pty.set('ID', 'Updated')

    print etree.tostring(root)

    示例输出:

    展开全文
  • xml 文件内容:代码如下:最新通告:五一放假七天!请各教员悉知4redC#代码:代码如下:XmlDocument xml = new XmlDocument();xml.Load(context.Server.MapPath("~/js/XMLFile.xml"));XmlNode xn = xml.DocumentElement;...

    xml 文件内容:

    代码如下:

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

    最新通告:五一放假七天!请各教员悉知

    4

    red

    C#代码:

    代码如下:

    XmlDocument xml = new XmlDocument();

    xml.Load(context.Server.MapPath("~/js/XMLFile.xml"));

    XmlNode xn = xml.DocumentElement;

    foreach (XmlNode node in xn.ChildNodes)

    {

    if (node.Name == "info")

    {

    node["content"].InnerText = content;

    node["speed"].InnerText = speed;

    node["color"].InnerText = color;

    }

    }

    xml.Save(context.Server.MapPath("~/js/XMLFile.xml"));

    另外两种办法:

    修改xml字符串的某个节点的属性值,如下:

    代码如下:

    XmlDocument doc = new XmlDocument();

    doc.LoadXml("");

    XmlAttribute att =(XmlAttribute)doc.SelectSingleNode("/fsdlconfig/@userName");

    Console.WriteLine(att.Value);

    att.Value = "test";

    string str = doc.OuterXml;

    节点userName的值由原来的"ss",变成了"test",然后用doc.OuterXml保存修改后的xml为字符串。

    另一种方式:

    代码如下:

    XmlDocument doc = new XmlDocument();

    doc.LoadXml("");

    XmlElement att = (XmlElement)doc.FirstChild;

    att.SetAttribute("userName","test");

    string str = doc.OuterXml;

    时间: 2013-04-23

    展开全文
  • 增加,删除,修改某个节点下的某些属性3.增加,删除,修改某些节点的文本使用xml文档实现思想使用ElementTree,先将文件读入,解析成树,之后,根据路径,可以定位到树的每个节点,再对节点进行修改,最后直接将其...

    需求

    在实际应用中,需要对xml配置文件进行实时修改,

    1.增加、删除 某些节点

    2.增加,删除,修改某个节点下的某些属性

    3.增加,删除,修改某些节点的文本

    使用xml文档

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

    实现思想

    使用ElementTree,先将文件读入,解析成树,之后,根据路径,可以定位到树的每个节点,再对节点进行修改,最后直接将其输出

    实现代码

    1 #!/usr/bin/python2 # -*- coding=utf-8 -*-

    3 # author : wklken@yeah.net4 # date: 2012-05-25

    5 # version: 0.1

    6

    7 fromxml.etree.ElementTree import ElementTree,Element8

    9 def read_xml(in_path):10 '''读取并解析xml文件

    11 in_path: xml路径12 return: ElementTree'''13 tree =ElementTree()14 tree.parse(in_path)15 returntree16

    17 def write_xml(tree, out_path):18 '''将xml文件写出

    19 tree: xml树20 out_path: 写出路径'''21 tree.write(out_path, encoding="utf-8",xml_declaration=True)22

    23 def if_match(node, kv_map):24 '''判断某个节点是否包含所有传入参数属性

    25 node: 节点26 kv_map: 属性及属性值组成的map'''27 for key inkv_map:28 if node.get(key) != kv_map.get(key):29 returnFalse30 returnTrue31

    32 #---------------search -----

    33 def find_nodes(tree, path):34 '''查找某个路径匹配的所有节点

    35 tree: xml树36 path: 节点路径'''37 returntree.findall(path)38

    39 def get_node_by_keyvalue(nodelist, kv_map):40 '''根据属性及属性值定位符合的节点,返回节点

    41 nodelist: 节点列表42 kv_map: 匹配属性及属性值map'''43 result_nodes =[]44 for node innodelist:45 ifif_match(node, kv_map):46 result_nodes.append(node)47 returnresult_nodes48

    49 #---------------change -----

    50 def change_node_properties(nodelist, kv_map, is_delete=False):51 '''修改/增加 /删除 节点的属性及属性值

    52 nodelist: 节点列表53 kv_map:属性及属性值map'''54 for node innodelist:55 for key inkv_map:56 ifis_delete:57 if key innode.attrib:58 del node.attrib[key]59 else:60 node.set(key, kv_map.get(key))61

    62 def change_node_text(nodelist, text, is_add=False, is_delete=False):63 '''改变/增加/删除一个节点的文本

    64 nodelist:节点列表65 text : 更新后的文本'''66 for node innodelist:67 ifis_add:68 node.text +=text69 elif is_delete:70 node.text = ""

    71 else:72 node.text =text73

    74 def create_node(tag, property_map, content):75 '''新造一个节点

    76 tag:节点标签77 property_map:属性及属性值map78 content: 节点闭合标签里的文本内容79 return 新节点'''80 element =Element(tag, property_map)81 element.text =content82 returnelement83

    84 def add_child_node(nodelist, element):85 '''给一个节点添加子节点

    86 nodelist: 节点列表87 element: 子节点'''88 for node innodelist:89 node.append(element)90

    91 def del_node_by_tagkeyvalue(nodelist, tag, kv_map):92 '''同过属性及属性值定位一个节点,并删除之

    93 nodelist: 父节点列表94 tag:子节点标签95 kv_map: 属性及属性值列表'''96 for parent_node innodelist:97 children =parent_node.getchildren()98 for child inchildren:99 if child.tag ==tag and if_match(child, kv_map):100 parent_node.remove(child)101

    102 if __name__ == "__main__":103 #1. 读取xml文件104 tree = read_xml("./test.xml")105

    106 #2. 属性修改107 #A. 找到父节点108 nodes = find_nodes(tree, "processers/processer")109 #B. 通过属性准确定位子节点110 result_nodes = get_node_by_keyvalue(nodes, {"name":"BProcesser"})111 #C. 修改节点属性112 change_node_properties(result_nodes, {"age": "1"})113 #D. 删除节点属性114 change_node_properties(result_nodes, {"value":""}, True)115

    116 #3. 节点修改117 #A.新建节点118 a = create_node("person", {"age":"15","money":"200000"}, "this is the firest content")119 #B.插入到父节点之下120 add_child_node(result_nodes, a)121

    122 #4. 删除节点123 #定位父节点124 del_parent_nodes = find_nodes(tree, "processers/services/service")125 #准确定位子节点并删除之126 target_del_node = del_node_by_tagkeyvalue(del_parent_nodes, "chain", {"sequency" : "chain1"})127

    128 #5. 修改节点文本129 #定位节点130 text_nodes = get_node_by_keyvalue(find_nodes(tree, "processers/services/service/chain"), {"sequency":"chain3"})131 change_node_text(text_nodes, "new text")132

    133 #6. 输出到结果文件134 write_xml(tree, "./out.xml")

    展开全文
  • 您可以像这样访问属性值:from elementtree.ElementTree import XML, SubElement, Element, tostringtext = """"""elem = XML(text)for node in elem.find('phoneNumbers'):print node.attrib['topic']# Create sub ...
  • 有两种方法,一种是xml.dom.minidom,另一种是xml.etree.ElementTree。这里先说第一种。昂,到家一看第二种已经有人写出来了,这里更新一下代码,有处小问题。另外其实还有第三种叫“正则匹配”的方法,晚些时候更新...
  • 增加,删除,修改某个节点下的某些属性3.增加,删除,修改某些节点的文本使用xml文档实现思想使用ElementTree,先将文件读入,解析成树,之后,根据路径,可以定位到树的每个节点,再对节点进行修改,最后直接将其...
  • python修改xml文件标签的属性值

    千次阅读 2020-06-12 11:57:39
    首先需要说明的是,直接修改一个xml文件是不太现实的,我们能做的是将xml文件中的所有文本读出来,修改文本的内容之后将其写入到一个新的文件中,只是多了一步写入的过程,其实也挺简单的。 python读写xml有两个包...
  • 下午一直找python修改xml标签内的属性值应该是怎么修改,总是差那么一点点都写不对这个函数,找到的博客大部分没有写这一步。这里记录一下,顺便有两篇优秀的博客。 解决这个问题的思路是我认为一定会有一个set方法...
  • 主要介绍了python批量修改xml属性的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 您可以这样访问属性值:from elementtree.ElementTree import XML, SubElement, Element, tostringtext = """"""elem = XML(text)for node in elem.find('phoneNumbers'):print node.attrib['topic']# Create sub ...
  • 一般的通过属性名查找属性值在百度上很多。例如http://www.jb51.net/article/50812.htm 以下记录以下不知道属性名时候直接查找属性名和属性值的方法: 以下代码是从http://www.thinksaas.cn/ask/question/23572/...
  • XML 中,XML属性值须加引号。请研究下面的两个 XML 文档。第一个是错误的,第二个是正确的: <note date=08/08/2008> <to>George</to> <from>John</from> </note> <...
  • 今天小编就为大家分享一篇对python修改xml文件的节点方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python批量修改xml属性

    万次阅读 2018-01-25 21:48:26
    如何批量修改指定文件夹下的xml文件的指定属性.分三步走,首先,我们先看看如何读写单个 的xml文件;第二步,来看看如何遍历指定文件夹下的所有文件,获取到所有文件的文件名;第三步,我们来看看一二之间 该如何衔接.好,...
  • python批量修改xml文件的标签属性值

    千次阅读 2020-01-08 18:25:03
    一、使用背景 之前在ubuntu下做过yolov3目标检测的项目(Pascal VOC数据集),...因此需要用python批量修改xml中 filename和path两个属性值 所以…找轮子发现了-> https://blog.csdn.net/qq_41983165/article...
  • Python链式获取XML属性,让读写更加高效!
  • xml文档来自ganglia-gmond端telnet localhost 8649产生出来的文档,由于ganglia每隔一段时间就更新数据,为了永久保存数据到MySQL中,就用python写了最开始的代码,后续的数据库操作应该是update 某些属性。...
  • 对于这类工作,我总是推荐BeautifulSoup,因为它有一个非常容易学习的API:from BeautifulSoup import BeautifulStoneSoup as Soupxml = """"""soup = Soup(xml)rpt_side = soup.trdcaptrpt.rptsiderpt_side['txt1'] =...
  • C#执行保存在XML属性值里的Python脚本

    千次阅读 2014-01-24 15:33:50
    C#执行保存在XML属性值里的Python脚本
  • node.getAttribute(AttributeName)获取XML节点属性值 node.getElementsByTagName(TagName)获取XML节点对象集合 node.childNodes #返回子节点列表。 node.childNodes[index].nodeValue获取XML节点值 node.firstChild#...
  • 分享下python中使用模块xml...一 、python模块 xml.dom 解析XML的APIminidom.parse(filename)加载读取XML文件doc.documentElement获取XML文档对象node.getAttribute(AttributeName)获取XML节点属性值node.getElement...
  • 关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码。这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件。一、什么是xmlxml即可扩展标记...
  • abc.xml4Python测试ZopeOk ,从结构上,它很像我们常见的HTML超文本标记语言。但他们被设计的目的是不同的,超文本标记语言被设计用来显示数据,其焦点是数据的外观。它被设计用来传输和存储数据,其焦点是数据的内容...
  • 一、简单介绍Xml是实现不同语言或程序进行数据交换的协议,跟json差不多,但是xml远远先于json出现,例如在很多传统的金融行业的很多系统接口还主要是xml格式。Xml的格式如下:2016采集卡配置first视频配置拓展配置二...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,451
精华内容 20,180
关键字:

python修改xml属性值

python 订阅