我想解析一个" 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>
- 要识别的开始标签是
"<Agent Host='us.com'"
- 要识别的最终标签是
"</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()