2014-01-10 4 views
0

아래와 같이 XML 파일을 만들고 싶습니다. 나는 문자열로 child 노드의 값을 처리하고 문자열 내가 자식 노드docptr을 사용하지 않고 CDATA를 특정 노드에 값으로 추가하는 방법

<?xml version="1.0" encoding="UTF-8"?> 
    <Root> 
     <child>![CDATA[<data>hello</data>]]</child> 
    </Root> 

에 배치하고 싶었 값이 기능 xmlNewText(BAD_CAST string)을 사용하여 추가하지만이

<?xml version="1.0" encoding="UTF-8"?> 
    <Root> 
     <child>![CDATA[&lt;data&gt;hello&lt;/data&gt;]]</child> 
    </Root> 

로 변환된다 누군가 그렇게 할 때 나를 인도 할 수 있습니까? 나는 몇 가지 질문을 보았고 답변은 docptr을 사용하여 cdatasection을 만드는 것에 기반을두고있다. docptr을 사용하지 않고 cdatasection을 만들어야합니다. 나는 단지 나와 함께 루트 팩터를 가지고있다. 그렇게 할 수 있습니까? 나는 프로그래밍 언어로서 c를 사용하고 있으며 사용하는 라이브러리는 libxml입니다.

+1

당신은 당신이 사용하는 프로그래밍 언어에 대한 태그를 추가해야합니다 . 지금은 추측조차 할 수 없습니다. – TheConstructor

+1

님이 질문을 수정했습니다. –

답변

0

XML 컨텐트를 텍스트로 DOM에 삽입하여 실제로 컨텐트를 구성 할 수 없습니다. 이 예제는 DOM이 텍스트 노드의 내용을 올바르게 이스케이프 할뿐만 아니라 잘못된 구문을 사용하는 몇 가지 이유를 보여줍니다.

대신 노드 팩토리를 사용하여 문서에 포함 할 텍스트가 들어있는 CDATASection 노드를 만드십시오.

여기에서 CDATA 섹션을 사용하는 데는 이유가 없습니다. 수동으로 내용을 래핑하지 않고 텍스트 노드를 만들고 DOM 직렬기를 적절하게 이스케이프 처리하도록하십시오. 아마도 문자 단위로 이스케이프 처리를하게 될 것인데, 이는 XML 파일에서 꽤 보이지는 않지만 XML을 처리하는 제대로 작성된 응용 프로그램과 완전히 똑같은 것을 의미합니다.

(틀림없이 일반 텍스트와 CDATA 섹션의 차이에 대해주의 할 일부 응용 프로그램이 있습니다. 이러한 응용 프로그램의 기술 용어는 "깨진"입니다.)