开发者社区> 问答> 正文

解析和修改XML

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

展开
收起
哦哦喔 2020-04-17 13:19:17 837 0
1 条回答
写回答
取消 提交回答
  • 使用 xml.etree.ElementTree 模块可以很容易的处理这些任务。 第一步是以通常的方式来解析这个文档。例如,假设你有一个名为 pred.xml 的文档,类似下面这样:
    
    <?xml version="1.0"?>
    <stop>
        <id>14791</id>
        <nm>Clark & Balmoral</nm>
        <sri>
            <rt>22</rt>
            <d>North Bound</d>
            <dd>North Bound</dd>
        </sri>
        <cr>22</cr>
        <pre>
            <pt>5 MIN</pt>
            <fd>Howard</fd>
            <v>1378</v>
            <rn>22</rn>
        </pre>
        <pre>
            <pt>15 MIN</pt>
            <fd>Howard</fd>
            <v>1867</v>
            <rn>22</rn>
        </pre>
    </stop>
    下面是一个利用 ElementTree 来读取这个文档并对它做一些修改的例子:
    
    >>> from xml.etree.ElementTree import parse, Element
    >>> doc = parse('pred.xml')
    >>> root = doc.getroot()
    >>> root
    <Element 'stop' at 0x100770cb0>
    
    >>> # Remove a few elements
    >>> root.remove(root.find('sri'))
    >>> root.remove(root.find('cr'))
    >>> # Insert a new element after <nm>...</nm>
    >>> 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 version='1.0' encoding='us-ascii'?>
    <stop>
        <id>14791</id>
        <nm>Clark & Balmoral</nm>
        <spam>This is a test</spam>
        <pre>
            <pt>5 MIN</pt>
            <fd>Howard</fd>
            <v>1378</v>
            <rn>22</rn>
        </pre>
        <pre>
            <pt>15 MIN</pt>
            <fd>Howard</fd>
            <v>1867</v>
            <rn>22</rn>
        </pre>
    </stop>
    
    2020-04-17 13:19:49
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像