【问题标题】:Python XML Parser that tracks line number in XML document跟踪 XML 文档中行号的 Python XML 解析器
【发布时间】:2016-07-13 01:35:47
【问题描述】:

Python 中是否有任何 XML 解析库可以跟踪每个元素的行号?我正在编写一个脚本来验证 XML 设置,如果我的脚本检测到无效行,打印行号会很有用。

【问题讨论】:

    标签: python xml


    【解决方案1】:

    lxml 可用于解析 xml 并保留行号。这是一个简单的例子:

    from lxml import etree
    
    xml = '''
        <foo>
            <bar baz="1">hello</bar>
            <bar baz='2'>world</bar>
        </foo>
    '''
    
    root = etree.fromstring(xml)
    for bar in root.findall("bar"):
        baz = bar.attrib.get('baz', None)
        if int(baz) > 1:
            raise Exception("baz must not be greater than 1 on line %s" % bar.sourceline)
    

    【讨论】:

      【解决方案2】:

      我认为您真正需要做的是根据预期的 XML 模式验证 XML 文件lxmlcan do that for you。验证日志将包含您在 XML 文件中定位问题所需的所有信息。

      【讨论】:

      • 我没有尝试根据预期的架构来验证它。我正在使用我自己的逻辑验证我的 XML 中的属性是否具有预期的数字。我正在尝试做的一个简单示例:检查所有名为“foo”的元素并确保 foo 中属性“bar”的值不超过 100。如果 bar > 100,我想知道该行它发生的地方。
      猜你喜欢
      • 2020-07-10
      • 1970-01-01
      • 2013-08-31
      • 2015-12-10
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多