문제가 있습니다. 나는 이해하지만 문법과 방법을 모른다. 거대한 XML 파일이 있습니다. 모든 파일을 열고 태그 값에서 일부 문자열을 검색하고 발견되면 true를 반환해야합니다. 같은 태그가 여러 번 나타납니다. 다음은 XML 파일에 태그가 하나 존재하는 경우입니다.오류 : Minidom Python에서 색인이 범위를 벗어남
<ulink xlink:type="simple"
xlink:href="urn:x-xxx:r2:reg-doc:*-*:*:*?title=XXX"
xlink:title="XXX" xmlns:xlink="http://www.w3.org/1999/xlink"
>XXX</ulink>.</p>
참고 : 하나의 파일에서 많은 태그를 사용할 수 있습니다. 모든 태그에서 "xlink : title"콘텐츠를 읽고 내 문자열과 비교해야합니다. 발견되면 인쇄해야합니다. 여기에 내가 시도한 코드가있다.
from xml.dom.minidom import parse, parseString
import os, stat
import sys
def shahul(dir):
for r,d,f in os.walk(dir):
for files in f:
if files.endswith(".xml"):
dom=parse(os.path.join(r, files));
ref=dom.getElementsByTagName('ulink')
link=ref[0].attributes['xlink:title'].value
if "mystring" in link:
found=True
break
print (files, found, sep='\t')
shahul("location")
참고 : 위의 코드에서 나는 link = ref [0] .attributes [ 'xlink : title']. value를 사용했습니다. 그래서 ulink 태그가 처음 나타나는 것을 의미합니까? 그래서 ulink 태그의 모든 내용을 저장하고 싶다면 어떻게해야합니까?
같은 이름으로 여러 태그를 사용할 수 있다는 이유로 색인 오류가 발생합니까? 또는 링크 아래에있는 모든 항목을 저장할 수 없습니까? 나를 안내 해줘. 감사.
dom=parse(os.path.join(r, files))
ref=dom.getElementsByTagName('ulink')
for n in ref:
attr = n.getAttributeNode('xlink:title')
if attr:
link = attr.nodeValue.strip()
print link
그것은 이름 ulink
에 의해 모든 요소를 식별하고 이러한 모든 노드의 목록을 얻을 :
감사합니다. 그것은 작동 했어 :) –