문제

Ok,저는 읽고 스트림에서 데이터를 사용하여 StreamReader.데이터 안쪽에 스트림하지 않는 xml,그것은 아무것도 될 수 있습니다.

에 따라 입력 StreamReader 쓰는 출력 스트림을 사용하여 XmlTextWriter.기본적으로 할 때,그리고 모든 것 출력이 스트림 데이터가 포함된 입력 스트림에 싸여 요소에 포함되는 상위 요소입니다.

나의 문제는 두 가지입니다.데이터 얻에서 읽을 입력 스트림에서 덩어리,그리고 StreamReader 클래스의 반환 char[].는 경우에 데이터 입력 스트림을 포함한"]]>"해야에 걸쳐 분할 두 CDATA 요소입니다.첫째,어떻게 검색에 대한"]]>"문자 배열?그리고 두 번째,기 때문에 나는 독서 덩어리에는"]]>"문자열이 될 수 있는 분할에서 두 개의 덩어리,그래서 나는 어떻게 계정에 대한 이?

나는 아마로 변환 char[]를,문자열 검색을 수행 교체습니다.를 해결하는 것이 나의 첫 번째 문제입니다.에서 각각 읽고,나는 또한지 확인하는 경우 마지막 문자가"]",그래서 그 다음에 읽을 경우 첫번째 두 문자는"]>"나는 새로 시작 CDATA 섹션입니다.

이의 효율적인 포함하기 때문에 변환하는 char 배열하는 문자열이 의미하는 시간을 보내는 데이터를 복사하고 먹기까지 두 번의 메모리입니다.거기에 더 많은 효율적인 방법으로,두 speedwise 및 메모리 현?

도움이 되었습니까?

해결책

두 번째로,저는 읽기 덩어리에는"]]>"문자열이 될 수 있는 분할에서 두 개의 덩어리,그래서 나는 어떻게 계정에 대한 이?

실제로,당신은 당신이 다시 마지막 두 문자를 사용 침 그들니다.그런 다음 경우 새로운 입력 제공,그것을 추가할 큐 그리고 다시 모든 그러나 마지막 두 개의 문자를 검색 및 바꾸기 그들을 위해 출력합니다.

더:귀찮게 하지 않으로 CDATA 섹션에 모두.그들이 거기에 있의 편의를 위해 손으로 제작.만약 당신이 이미 하 찾기/바꾸 이유가 없습니다 당신은 단지 검색 및 바꾸기'<','>'과'&'그들의 사전 정의된 실체,그리고 사람들을 포함에서 일반 텍스트 노드입니다.때문에 사람들은 간단한 단일-문자 교체,당신을 걱정할 필요가 없에 대한 버퍼링이다.

그러나:를 사용하는 경우 XmlTextWriter 당신 말처럼,그것은 간단으로 호출 WriteString()에 대한 각각의 덩어리를 들어오는 텍스트입니다.

다른 팁

에 따르면 XML을 생산할 때 Bozo라고 불리는 것을 피하는 방법:

CDATA 섹션을 신경 쓰지 마십시오

XML은 사전 정의 된 엔티티 및 CDATA 섹션 인 마크 업에 유의 한 문자를 피하는 두 가지 방법을 제공합니다. Cdata 섹션은 구문 설탕 만 있습니다. 두 가지 대안적인 구문 구성은 의미 적 차이가 없습니다.

CDATA 섹션은 XML을 수동으로 편집 할 때 편리하며 Markup에 유의 한 문자 (예 : 코드 샘플)가 포함 된 큰 텍스트를 붙여 넣어야합니다. 그러나 Serializer를 사용하여 XML을 생성 할 때 Serializer는 자동으로 탈출하고 이스케이프 방법의 선택을 미세 관리하려고 시도하면 버그의 가능성 만 열립니다.
...
<,>, & 및 (속성 값) 만 "탈출이 필요합니다.

작은 특수 문자 세트가 인코딩/탈출되는 한 작동해야합니다.

탈출을 처리 해야하는지 여부는 다른 문제이지만 훨씬 더 간단한 문제입니다.

그런 다음 전체 로트를 자식 텍스트 노드로 관련 XML 요소에 추가하십시오.

CDATA의 정확히 두 가지 실제 사용 사례를 알고 있습니다.

하나는 스크립트를 포함하는 XHTML 문서에 있습니다.

<script type="text/javascript">
<![CDATA[
   function foo()
   {
      alert("You don't want <this> text escaped.");
   }
]]>
</script>

다른 하나는 텍스트에 임베디드 마크 업이 포함 된 수공예 XML 문서에 있습니다.

<p>
   A typical XML element looks like this:
</p>
<p>
   <pre>
   <![CDATA[
      <sample>
         <text>
            I'm using CDATA here so that I don't have to manually escape
            all of the special characters in this example.
         </text>
      </sample>
   ]]>
   </pre>
</p>

다른 모든 경우에, DOM (또는 XMLWRIRER 또는 XML을 만들기 위해 사용하는 모든 도구)이 텍스트 노드가 제대로 작동하는 데 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top