2010-03-08 4 views
5

XML 파일을 읽고 NSXMLDocument 객체로 변환했습니다. 그러나 노드의 문자열 내용에 "<"이 있기 때문에 "& lt"으로 변환되었습니다. 그래서 XML 문서로 파일에 쓸 때 "& lt"문자가 들어 있습니다.<xml 문서로 변환합니다

"& lt"이 "<"으로 바뀌는 일반 XML 파일로 파일에 쓸 수있는 방법은 무엇입니까?

감사와 안부, 레닌

답변

4

문자 노드에 < 문자가 표시되면 xml을 파일에 쓸 때 &lt;으로 직렬화됩니다.

xml 파서로 해당 파일을 나중에 읽으면 텍스트 노드에 원래 < 문자가 포함됩니다.

텍스트 노드를 CDATA로 인코딩 할 수도 있습니다. 이 경우 직렬화 된 문자는 CDATA 블록 안에 <입니다. 많은 XML API는 CDATA와 텍스트 노드 사이의 차이를 유지하지 않습니다. CDATA는 인간 제작자가 쉽게 편집 할 수 있도록하는 탈출 메커니즘으로 생각되어야합니다.

1

는 XML의 텍스트 노드의 <&lt;로 표현되어야한다.

xml 파일에 쓰기 전에 s/&lt;/</g을 사용하여 바꾸면 해당 파일에서 읽을 때 구문 분석 오류가 발생합니다.

0

당신은 작동

반드시 htmlspecialchars 및

를 htmlentities()는 XML 태그의 일부가 아니다 때 < 문자를 이스케이프해야합니다

+0

감사합니다. 그것을 확인할 것입니다. – boom

+0

안녕하세요, 내 코드는 코코아입니다. htmlspecialchars 및 htmlentities가 아닌 코코아로 변환 할 수있는 대체 방법을 제공 할 수 있습니까? – boom

+0

@ Lenin : 죄송합니다. 나는 cocao를 알지 못합니다. – Pavunkumar

0

을 그 반대의 작업을 수행하는 다음과 같은 기능을 사용할 수 있습니다 (see here). 당신이, 당신이 당신의 XML 문서를 작성하기 전에 트릭을 수행 할 수 있어야합니다 경우 당신은 정말, 그러나 ...

를 XML 스펙을 중단해서는 안 :

  1. 을 고유 한 문자열로 < 의 인스턴스를 교체하는 이 XML 파서에 의해 이스케이프되지 않습니다 (파일의 다른 곳에서는 발생하지 않음). *-lt-*과 같은 항목이 될 수 있습니다.
  2. 파서가 & 파일을 생성하도록합니다. 일반 텍스트로 파일에 읽기
  3. , 정규 < 문자로 인스턴스를 *-lt-*의 를 교체합니다.
  4. 파일을 다시 작성하여 XML 파서가 작성한 버전을 제거하십시오.

다시 말해 XML 사양을 위반하는 것은 끔찍한 생각입니다. 이렇게하면 파서가 새 XML 문서를 읽을 수 없습니다.

0

당신이 PHP를 통해 XML 문서에 <에 & LT를 교체하려면 : 나는 XML을 통해 서버에서 뉴스 피드를 받고 다음 다른 xml 파일로 저장하고

$xmlFile = file_get_contents("example.xml"); 

$xml= str_replace(['&lt;','&gt;'],['<','>'], $xmlFile); 

echo $xml; 

을, 나는을에 geting있어 결과는 &lt;&gt;이므로이 방법을 사용했습니다. 그것은 XML을 저장하는 가장 똑똑한 방법은 아니지만 나는 프로 메가 선배가 아니다.

관련 문제