2012-02-05 2 views
1

나는 DOMDocument 및 모든 관련 클래스로 작업 해왔지만 몇 가지 사항은 여전히 ​​나에게 불분명하다. (이 말 그대로 속성이 텍스트 노드를 노드 무엇을 포함하고 있기 때문에)는 그래서 여기DOMAttr의 value 속성이 혼란 스럽습니까?

http://bla.com/?bla=test&bla2=test 

을 반환해야 할 때 예를 들어

은 $ domattr-> 값은

http://bla.com/?bla=test&bla2=test 

을 반환 내 질문은 다음과 같습니다.

1) 왜 앰퍼샌드를 변환합니까? DOMAttr의 관점에서 볼 때 그 논리는 무엇입니까?

2) 어떻게 DOMNode를 사용하여 실제 값을 얻을 수 있습니까?

3) 이런 종류의 물건을 다룰 때 모범 사례는 무엇입니까? 일관되고 예측 가능한 코드와 동작을 원하지만 기대 한 바를 얻지 못하면 혼란 스러울 수 있습니다.

답변

1

& 대신에 &을 쓰는 전체 점은 HTML 소스 코드에서 & 문자가 특별한 의미를 가지기 때문입니다. 브라우저가 HTML 소스 코드를 DOM 트리로 구문 분석하면 HTML 엔터티 ( , • 등)가 해당 문자로 변환됩니다. DOM 트리 안의 HTML 엔티티를 보존 할 필요가 없습니다. 브라우저는 그렇게하지 않습니다.

+0

그렇다면 DOMNode :: $ nodeValue, DOMNode :: $ textContent 및 DOMAttr :: $ value는 모두 HTML 특수 문자와 관련하여 동일한 방식으로 동작합니까? – x74x61

+0

@ x74x61 예. 이 부분이 HTML 표준에서 정의 된 곳인지 잘 모르겠지만 브라우저 전반에서 간단한 테스트를 수행했으며 엔티티가 모두 교체되었습니다. –

+0

AH, 알았습니다. 나는 지금 그것을 얻고 있다고 생각한다. 그래서 DOMNode :: saveHTML()과 같은 메소드는 모든 HTML 엔티티를 다시 만듭니다. 맞습니까? 고마워, 거의 다 처리 했어. – x74x61

관련 문제