JS 코드를 Python으로 변환하고 있으며 미니 DOM을 사용하고 있지만 특정 사항이 올바르게 작동하지 않습니다. 그들은 JavaScript로 실행될 때 작동합니다. 일관된 변경/순서 (즉, 클래스 속성이 추가 된 위치)를 원하기 때문에 변환 중이며, Python의 더 쉬운 기능 중 일부를 사용할 수 있습니다. 내가 건너 한Python MiniDom이 요소를 제대로 제거하지 못했습니다.
내 최신 문제는 이것이다 :
fonts = doc.getElementsByTagName('font')
while(fonts.length > 0):
# Create a new span
span = doc.createElement("span")
# Give it a class name based on the color (colors is a map)
span.setAttribute("class", colors[fonts[0].getAttribute("color")])
# Place all the children inside
while(fonts[0].firstChild):
span.appendChild(fonts[0].firstChild)
# end while
# Replace the <font> with a the <span>
print(fonts[0].parentNode.toxml())
fonts[0].parentNode.replaceChild(span, fonts[0])
# end while
문제는 그것이 있어야처럼 자바 스크립트와는 달리, 요소가 fonts
에서 제거되지 않습니다 점이다. 표준 (레벨 3) DOM 규칙을 사용하는 더 나은 라이브러리가 있습니까? 아니면 xPath (다른 모든 DOM 파서가 사용하는 것)를 사용하지 않으려 고하면 해킹해야 할 것입니다.)?
감사합니다.
[문서] (https://docs.python.org/2/library/xml.dom.html)의 맨 아래에서 요소 컬렉션이 실제 DOM처럼 작동하지 않는다고 경고하는 것을 볼 수 있습니다 . 스크립트가있는 웹 페이지의 브라우저에서 스크립팅하지 않기 때문에 일반적으로 문제가되지 않습니다. 당신은 단지 정적 인 파싱 된 HTML을 다루는 것입니다. 이 경우와 다른 많은 경우 코드를 변경하여 원하는 효과를 얻을 수 있어야합니다 (예 : 항상 첫 번째 요소를 보는 대신 '글꼴'을 반복). 이 특정 작업을 수행하는 방법이나 완전히 "실제"DOM 동작을 얻는 방법에 대한 질문입니까? – BrenBarn
@BrenBarn, 둘 다. 나는 진짜 DOM 동작을 좋아하지만, 그렇지 않다면이 문제를 어떻게 해결할 것인가. 그것이 무엇이든 바뀌면 v3.4에서 작업하십시오. – David