2013-09-21 2 views
1

당신의 도움이 필요합니다. ltdml 라이브러리를 사용하여 dtd 파일을 구문 분석합니다.lxml 라이브러리 (파이썬)로 dtd 파일 구문 분석

이 예제에서 어떻게 C 부분 표현식을 얻을 수 있습니까?

dtd = etree.DTD(StringIO('<!ELEMENT a (b,c,d)>')) 

나는이

content = dtd.elements()[0].content 

left, right = content.left, content.right 

시도하지만 오른쪽 부분 식의 왼쪽.

http://lxml.de/validation.html#id1

답변

1

나는 완전히 (내가 전에이 감동 적이) 추측 만 해요 :

from io import StringIO 
from lxml import etree 

dtd.elements()[0].content.right.left 
#>>> <lxml.etree._DTDElementContentDecl object name='c' type='element' occur='once' at 0x7f6999a28250> 

?

+0

감사합니다. 정말 작동합니다. 질문이 하나 더 있습니다. 요소 수를 어떻게 계산할 수 있습니까? – user2800220

+0

'content' 변수를 트리로 반복하면서 발생한 끝점 수를 세어 봅니다. – Veedrac

+0

하위 식의 numer를 계산하는 방법에 대해 묻습니다. (b, c, d) -> 3 – user2800220