通过XML文件识别启动和结束XML标签(包括标签)后打印行



我想解析一个" pseudo" xml文件,识别开始和结束的"标签",然后打印标签 文本之间并通过整个XML文件

在这里," pseudo" xml文件的示例:

<?xml version='1.0' standalone='yes'?>
<config lastObjectId='4414'>
    <Agent Host='us.com'
        User='PLCR1'
        lastModifiedDate='2014-08-01'>
    </Agent>
</config>
  1. 要识别的开始标签是"<Agent Host='us.com'"
  2. 要识别的最终标签是"</Agent>"

我已经尝试了不同的正则态度以匹配整个块,但是这些块严格/固定在XML块所包含的线量中,并且还不够好。

注意:我说是伪XML,因为所有<Agent Host='us.com'均以这种方式格式化,而没有" > "

Regex

(.*Agent.*)((.*n){1,3})(.*Agent.*)

然后我尝试使用" re. -match",但我还没有找到结合if语句以满足起点和结束标签的方法。

基本上我会说我的问题在IF语句和正则票据上。

import re
xmlfile = open("20190211", "r")
output = open("output1.txt", "w")
counter = 0
for line in xmlfile:
    if re.match(".*Agent.*us.*",line):
        print (line , file = output)
        counter += 1
print ("Count: %s"% (counter) ,file =output)
output.close()

我希望在文件上匹配和打印XML"块",通过启动和结束标签标识。

<Agent Host='us.com'
    User='PLCR1'
    lastModifiedDate='2014-08-01'>
</Agent>

,然后浏览文件的其余部分并找到其他文件。

额外的尝试后,我提出了答案的答案。添加第二个" for Loop"将搜索和匹配结束标签,并通过所有XML输入文件进行相同的操作,以防它匹配两个标签

start tag -->>>>   <Agent Host='us.com'
end tag   -->>>>   </Agent>
import re
xmlfile = open("20190211", "r")
output = open("output1.txt", "w")
counter = 0
for line in xmlfile:
    if re.match(".*Agent.*us.*",line):
        print (line , file = output)
        counter += 1
    for line in xmlfile:
        print (line ,file = output)
        if re.match(".*Agent>,line):
            break
print ("Count: %s"% (counter) ,file =output)
output.close()

相关内容

  • 没有找到相关文章

最新更新