2014-07-09 4 views
1
XmlDocument xmlDoc = new XmlDocument();   
XmlElement elem = xmlDoc.CreateElement("Elem"); 
xmlDoc.AppendChild(elem); 

AppendChild()는 그것이 멤버 함수보다 모든 객체에 공통 기능 같다CreateElement()가 XmlDocument 클래스의 멤버 함수 인 이유는 무엇입니까?

CreateElement()에게이다 말이 .... 해당 xmldoc 의해 참조 객체의 일부를 변경하고있다 .... 이유 그것은 회원 함수()입니까?

+0

내부적으로 새로 작성된 요소의 일부가 주어진 XML 문서에 고유하게 초기화되기 때문에 이것이라고 생각합니다. 그것이 정적이라면 가능하지 않을 것입니다. 아니면 각각의'XmlDocument' 인스턴스를 전달해야합니다. 그건 그렇고 : 당신은 프레임 워크의 소스 코드를 들여다 보며 무슨 일이 일어나는지 직접 볼 수 있습니다. –

답변

1

CreateElement있어서 아마 생성자 PARAMS 하나로서 XmlDocument을 필요 XmlElementconstuctor을 사용하여 새로운 XmlElement를 생성한다.

+1

[소스보기] (http://referencesource.microsoft.com/#System.Xml/Xml/System/Xml/Dom/XmlDocument.cs#890)를 할 수있는 이유를 "아마"라고 생각하는 이유는 무엇입니까? –

+2

다음 질문은 다음과 같습니다. XmlElement 클래스에 XmlDocument 매개 변수가 필요한 이유는 무엇입니까? 결국, OwnerDocument가없는 XmlElement가 있어서는 안된다는 디자인 결정이 내려졌습니다. 이 descision이 만들어진 이유는 아마이 클래스의 디자이너 만 대답 할 수 있습니다. – sloth

+0

이것은 작성자의 구현 결정보다는 DOM 사양에 관한 것입니다. 예를 들어, 노드의 모든 하위 노드가 동일한 문서에 속한다고 가정합니다. 자식 노드의 목록은 라이브 목록이며 변경 사항을 반영합니다. 기본 속성 값은 문서에 따라 다릅니다. 편집 : 엔티티. 따라서 한 문서에서 요소를 선택하여 다른 문서로 옮길 수는 없으므로 복제해야합니다. – acelent