xml 파일다루기
조회수 738회
<?xml version="1.0" encoding="UTF-8"?><response>
<header>
<resultCode>INFO-00</resultCode>
<resultMsg>NORMAL SERVICE</resultMsg>
</header>
<body>
<items>
<item>
<sgId>20180613</sgId>
<sgTypecode>4</sgTypecode>
<huboid>100000000</huboid>
<sggName>종로구</sggName>
<sdName>서울특별시</sdName>
<wiwName>종로구</wiwName>
<jdName>무소속</jdName>
<name>홍길동</name>
<hanjaName>洪吉童</hanjaName>
</item>
</items>
</body>
만약 xml 파일이 이런식으로 되어있다면,
from bs4 import BeautifulSoup as bs
f = open('상단의파일','r',encoding = 'UTF-8')
l = f.read()
soup = bs(l, 'lxml')
if x in soup.findAll('item')
print(x.find('sgld'))
이 함수의 결과값이 none이 뜨는 이유가무엇일가요..? 어떤방식으로해야 돌아갈가요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
질문을 하기 전에 코드를 잘 살펴보고 하세요. 안된다고 생각도 안해보고 이곳에 올리면 질문자 실력이 향상되질 않습니다.
질문자가 작성한 코드에는 두가지 문법적인 문제가 있습니다. 문법적인 문제다라는 것은 오류메세지도 제대로 확인안해봤다는 의미입니다.
첫째로.
작성한 xml 은 validation하지 않습니다.
xml은 1개의 root 만 가져야 합니다. 그런데
<response>
가 root 임에도</response>
가 누락되어 있습니다.둘째로. 소문자 l 과 대문자 I 를 혼동하고 있습니다. 또한 lxml 에 의해 소문자로 변경되므로 sgid 로 찾아야 합니다.
print(x.find('sgld')) # sgid
markup 형태(html, xml)의 코드를 작성할때는 꼭 들여쓰기를 습관화하세요
xml = '''<?xml version="1.0" encoding="UTF-8"?> <response> <header> <resultCode>INFO-00</resultCode> <resultMsg>NORMAL SERVICE</resultMsg> </header> <body> <items> <item> <sgId>20180613</sgId> <sgTypecode>4</sgTypecode> <huboid>100000000</huboid> <sggName>종로구</sggName> <sdName>서울특별시</sdName> <wiwName>종로구</wiwName> <jdName>무소속</jdName> <name>홍길동</name> <hanjaName>洪吉童</hanjaName> </item> </items> </body> </response>''' from bs4 import BeautifulSoup as bs soup = bs(xml, 'lxml') for x in soup.findAll('item'): print(x.find('sgid'))
댓글 입력