2009-04-27 4 views
0

내가 런타임에 XML을 생성하고 문제는 내가간단한 XML 질문

<Item> 
    <Content><strong>Hi<strong></Content> 
</item> 

이 문제를 해결하는 방법이 태그에 일부 HTML 내용을 저장하려고 할 때입니다

<Item> 
    <Content>Hi</Content> 
</item> 

같은 스키마입니다 사전에

덕분에

+0

무슨 문제입니까? –

+0

그의 HTML은 xml을 완벽하게 파싱 할 수 없습니까? 내 말은, 그것이 적절한 xhtml 경우 괜찮을거야. – ewanm89

+0

-1 uninformative title – bortzmeyer

답변

0

는 HTML 문자열이 제대로 당신이 그것을 추가하기 전에 탈출 할 필요가 the XML. 여기 .NET을 사용하는 경우 some ways이 있습니다.

0

태그 (<) 미만은 & lt를 사용하여 이스케이프 처리해야합니다. 그리고 > 태그 같은 (&있다)

+0

앰퍼샌드 자체 ('&')를 잊지 말고 먼저 '&'으로 바꾸어야합니다. –

1

당신은 CDATA 섹션에서 HTML 콘텐츠를 포함 할 수 있습니다 :

<Item><![CDATA[ <Content><strong>Hi</strong></Content> ]]></item> 
2

정답은 XML 태그를 포함하지 않는 것입니다. XML은 데이터 만 정의해야하며 파서는이를 올바른 마크 업에 넣어야합니다. 모든 항목 -> 내용은 <strong></strong>입니다.

다른 해결책은 XML 이스케이프 (&lt;&gt;)를 사용하여 태그를 이스케이프 처리하는 것입니다.

2

Item 요소에 Content 요소가 포함되고 Content 요소에는 텍스트 나 CDATA 또는 그와 유사한 요소 만 포함될 수있는 스키마가 있다고 가정합니다. 이 경우 두 가지 옵션이 있습니다.

먼저, 어떻게 든 HTML을 벗어날 수 있습니다. 위의 프레드릭 (Fredrik)이 제안한 것처럼 CDATA 섹션을 사용할 수도 있습니다. 또는 위와 같이 브라케팅을 벗어날 수 있습니다. 이러한 두 가지 솔루션을 통해 Content의 내용을 텍스트로 계속 처리 할 수 ​​있습니다. 이를 통해 요소에 간단한 콘텐츠 모델을 사용할 수 있습니다.

또는 Content 요소의 일부로 xhtml 요소를 허용하도록 스키마를 확장 할 수 있습니다. 나는 그 방법을 제안했다 here. 물론, 귀하의 콘텐츠가 xhtml이 아닌 HTML 인 경우이 방법은 효과가 없습니다.

정말로, xml의 일부로 포함 된 html을 구문 분석 할 수 있는지 여부는 선택 사항입니다. 텍스트로 만들려면 이스케이프 처리하십시오. 분석 가능하게하려면 스키마를 확장하십시오.

+0

동의. 그것은 모두 당신이 그것으로하고 싶은 것에 달려 있습니다. 두 가지 방법 모두 합법적 인 용도가 될 수 있습니다. –