2012-02-02 5 views
0

DOMDocument를 사용하여 XML 파일을 구문 분석하고 있습니다. 다른 요소를 반복하고 그 중 하나가 누락되어 있는지 확인하고 오류 메시지와 함께 createElement 배열을 채 웁니다. 마지막에 그 배열에 appendChild하기 위해 노력하고있어하지만 난 항상 같은 오류 메시지가 :PHP : DOMNode :: appendChild를 배열로 배열

Uncaught exception 'DOMException' with message 'Wrong Document Error' 
DOMNode->appendChild(Object(DOMElement)) 
1 {main} 
thrown in /xxx/xxx.php on line 235 
PHP Fatal error: Call to undefined method DOMElement::item() in /xxx/xxx.php on line 235. 

코드는 다음과 같다 :

$SMQuery = new DOMDocument(); 
$SMQuery->loadXML($params); 
$response = $SMQuery->createElement('SMreply'); 
$errors = array(); 
if (!$reqtyp = $SMQuery->getElementsByTagName("tag1")) 
{$errors[] = $SMQuery->createElement('error', 'tag1 Element is missing');} 
if (!$reqtyp = $SMQuery->getElementsByTagName("tag2")) 
{$errors[] = $SMQuery->createElement('error', 'tag2 Element is missing');} 
...... 

if(!empty($errors)) 
{ 
foreach($errors as $error) { 
    $response->appendChild($error); <==== this line is causing the error !!! 
} 
} 

어떤 도움을 많이 감사합니다. 건배, Riki.

+0

GOT IT !!!! 원래 코드에 오타가있었습니다! –

+0

오타 및 수정은 무엇입니까? –

답변

2

$response이 어디에 정의되어 있는지 표시하지 않지만 다른 결과가 new DOMDocument() 인 경우 오류가 발생합니다. 한 DOM 객체의 노드를 다른 객체에 직접 추가 할 수 없습니다. 먼저 ->importNode()을 통해 가져 오기해야합니다. 그 후에야 실제로 추가 할 수 있습니다.

+1

죄송합니다. 라인이 없습니다. $ 응답이 정의되었습니다 (코드를 편집하고 추가했습니다). -> importNode 같은 오류 메시지가 발생합니다. importNode를 할 필요가 없다고 생각합니다. 왜냐하면 내가 할 일이 있기 때문입니다. $ test = $ SMQuery-> createElement ('test', 'test'); $ response-> appendChild ($ test); 잘 작동하며 importNode를 사용할 필요가 없습니다! –