2009-07-07 2 views
3

SimpleXML을 사용하여 올바른 형식의 XHTML 문서를 출력하려고합니다. 지금SimpleXML을 사용하여 XHTML을 출력 할 때 이상한 물건

$dom = new DOMDocument(); 
$dom->loadXML($pbDoc->asXML()); 
$dom->formatOutput = true; 
echo $dom->saveXML(); 

: 나는 문서를 생성 한 후

$pbDoc = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>'.$myTitle.'</title> 
     <!-- Other headers --> 
    </head> 
</html>'); 

, 나는 출력 꽤 읽을 수있는 코드로 원하는, 그래서 나는 다음과 같은 DOM 모듈을 사용하고 있습니다 : 나는 이런 식으로하고 있어요 저를 괴롭히는 두 가지 이상한 일들이 있습니다. 그리고 나는이 행동이 정상적인 지, 가능하다면 그것을 어떻게 불가능하게하는지 궁금합니다. DOCTYPE의

  1. 존재는 바로 개방 <head> 태그 후 불필요한 메타 태그를 추가 $pbDoc->asXML()가 발생합니다

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    

    이유는 무엇입니까?

  2. 어떤 이유에서든 DOM 모듈은 코드를 들여 쓰지 않습니다 (다른 문서 (XHTML이 아닌 다른 문서)를 사용하는 것이 좋지만).

누구나 내가 틀릴 수도 있고 이러한 성가심을 없애는 방법에 대해 나에게 계몽 해 줄 수 있습니까? 는 XML이 < HTML로 시작하기 때문에 검색하고 추측 할 수있는 최선에 따르면

+1

SimpleXML이 'HTML 모드'로 전환되는 것처럼 보입니다. – Boldewyn

+0

그래, 나에게 너무 그렇게 보인다. 따라서이 모드를 방지 할 수 있는지 궁금합니다. –

답변

1

1. SimpleXML을 자동으로 HTML에 해당 태그를 생성합니다 >

2. 당신이 (http://pt2.php.net/manual/en/domdocument.loadxml.php#73933) 시도 할 수 있습니다 :

3. 마지막으로 (제거하는 방법), 출력 된 XML에 대해 간단한 str_replace()를 수행 할 수 있다고 생각합니다. 따라서 코드는 다음과 같습니다.

<?php 

// Define the $pbDoc here 

$dom = new DOMDocument(); 
$dom->loadXML($pbDoc->asXML()); 
$dom->formatOutput = true; 
echo str_replace('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />','',$dom->saveXML()); 

?> 
+0

# 2를 시도했지만 도움이되지 않았다고 생각합니다. 아마도 문자열을 $ dom-> loadXML에 전달하기 전에 을 제거했지만 도움이 될 수도 있습니다. 그러나 확실하지 않습니다. 어쨌든 (다른 이유로) SimpleXML로는 충분하지 않은 것 같아서 대신 DOM을 사용하도록 내 애플 리케이션을 다시 작성하겠습니다. 답변을 주셔서 감사합니다! :) –

관련 문제