2011-12-06 4 views
1

XML 문서를 생성하는 PHP 스크립트가 있지만 출력에 이상이 있습니다.태그 안에 포함하여 유효하지 않은 문자가 XML 출력에 무작위로 표시됩니다.

문서 전체에서 무작위로 임의의 문자가 표시되는 경우가 있습니다. 태그 자체에서도 마찬가지입니까? 예를 들어 :

<id><![CATA[JS-DWLG001]]></id> 

난 당신이 잘못된 문자가 'CDATA'에서 'D'를 대체하고, 그것을 볼 수 없습니다, 그래서 만약이 브라우저에서 렌더링하는 방법을 모르겠어요.

아이디어가 있으십니까?

편집 : 우리가 추가 문자열을 XML을 생성 할 때 PHP 스크립트에서

<? 
// variables and arrays populated here from db 
?> 

<job> 
       <title><![CDATA[<?=$field['vac_Title']?>]]></title> 
       <date><![CDATA[<?=date("D, j M Y g:i:s",$stamp)." GMT"?>>]]></date> 
       <referencenumber><![CDATA[<?=$field['vac_Ref']?>]]></referencenumber> 
       <url><![CDATA[<?=site_URL.parse_job_path($field['vac_Title'],$key)?>]]></url> 
       <company><![CDATA[<?=$field['vac_advertiser_name']?>]]></company> 
       <city><![CDATA[]]></city> 
       <state><![CDATA[<?=$field['vac_locs']?>]]></state> 
       <country><![CDATA[UK]]></country> 
       <postalcode><![CDATA[]]></postalcode> 
       <description><![CDATA[<?=$field['vac_Description']?>]]></description> 
       <salary><![CDATA[<?-$field['vac_Salary-Range']?>]]></salary> 
       <education><![CDATA[<?=$education_level?>>]]></education> 
       <jobtype><![CDATA[<?=$emp_type?>]]></jobtype> 
       <category></category> 
       <experience></experience> 
      </job> 
+0

당신이 PHP 스크립트의 샘플을 줄 수 문제가 해결됩니다 DOM XML을 사용하여 샘플 코드는

<?php $books = array(); $books [] = array( 'title' => 'PHP Hacks', 'author' => 'Jack Herrington', 'publisher' => "O'Reilly" ); $doc = new DOMDocument(); $doc->formatOutput = true; $r = $doc->createElement("books"); $doc->appendChild($r); foreach($books as $book) { $b = $doc->createElement("book"); $author = $doc->createElement("author"); $author->appendChild( $doc->createTextNode($book['author']) ); $b->appendChild($author); $title = $doc->createElement("title"); $title->appendChild( $doc->createTextNode($book['title']) ); $b->appendChild($title); $publisher = $doc->createElement("publisher"); $publisher->appendChild( $doc->createTextNode($book['publisher']) ); $b->appendChild($publisher); $r->appendChild($b); } header('Content-type: text/xml;charset=UTF-8'); echo $doc->saveXML(); ?> 

희망인가? – Ryan

+0

ID에 오류를 게시하고 필드 ID가 다른 비트에 없습니다 ... –

+0

죄송합니다. 위와 비슷한 약간 다른 XML 출력을 생성하는 다섯 가지 스크립트가 있다고 설명 했어야합니다. invald 문자는 다섯 파일 모두의 출력에 나타납니다. 설명 된 것처럼 임의로 나타납니다. 나는 그 문자가 실제로 포함되어있는 데이터뿐만 아니라 실제로 XML 태그 내에 어떻게 나타나는지에 대한 예로서 원래 'id'라인을 보냈다. – user1083820

답변

0

정상적으로 문제를 야기 다음은 코드의 비즈니스 비트가 XML을 생성 할 수 있습니다. 출력물에 특수 문자와 유니 코드 문자가있을 수 있습니다. 그래서 항상 핵심 PHP에서 제공하는 라이브러리를 사용하는 것이 좋습니다. XML 생성을 위해 DOM XML을 사용할 수있는 것처럼. 이렇게하면 특수 문자와 형식도 처리됩니다. 여기 는이

관련 문제