XML에서 큰 따옴표 문자 이스케이프


101

xml에 큰 따옴표에 대한 이스케이프 문자가 있습니까? 다음과 같은 태그를 작성하고 싶습니다.

<parameter name="Quote = " ">

하지만 "을 넣으면 문자열이 끝났다는 뜻입니다. 다음과 같은 것이 필요합니다 (c ++).

printf("Quote = \" ");

이스케이프하기 위해 큰 따옴표 앞에 쓸 문자가 있습니까?





짧은 답변 : &quot; 이야기의 나머지 ...
— kjhughes

답변:



119

다음은 큰 따옴표로 시작하는 XML에서 이스케이프해야하는 일반적인 문자입니다.

  1. 큰 따옴표 ( ")는&quot;
  2. 앰퍼샌드 ( &)는&amp;
  3. 작은 따옴표 ( ')는&apos;
  4. 보다 작음 ( <)은 다음으로 이스케이프됩니다.&lt;
  5. 보다 큼 ( >)은 다음으로 이스케이프됩니다.&gt;

3
틀 렸습니다. & apos; 유효한 XML 문자가 아닙니다. SGML 및 XML SUPERset 인 유효한 HTML 문자입니다.
— Stefan Steiger 2017

이것이 유효한 지점이지만 내가 함께 작업 한 대부분의 최신 XML 파서는 유효한 문자로 받아들이고 있습니다.
— Dariusz G. Jagielski

& quot; 문자열이 큰 따옴표로 묶인 경우 Android에서 올바르게 해석되지 않습니다. 이 경우 E-max 답변이 유일하게 작동합니다.
— Softlion

@StefanSteiger가에있어 이 목록
— OrangeDog

@Dariusz G. Jagielski : 현대 XML 파서를 반대하는 것은 없지만 데이터베이스 (예 : ms / pg)에서 XML로 작업하는 경우 모든 소프트웨어가 최신 XML 파서를 사용하는 것은 아니라는 것을 알 수 있습니다. 특히 복잡한 수십 년의 오래된 소프트웨어 일 때. 즉, 모든 사람이 최신 xml 파서를 사용한다면 좋은 일이 될 것입니다. 그러나 해당 코드가 이전의 복잡한 소프트웨어에 깊이 통합되어 있으면 대체하기가 매우 어려워집니다 (백 워드 호환성을 100 % 유지하면서). C의 단점이나 의존성 주입을 사용하지 않는 것입니다.
— Stefan Steiger

27

다른 사람들은이 경우 특정 이스케이프를 처리하는 방법에 대해 대답했습니다.

더 넓은 대답은 스스로 시도하지 않는 것입니다. XML API 사용-현존하는 거의 모든 최신 프로그래밍 플랫폼에서 사용할 수있는 것이 많이 있습니다.

XML API는 이와 같은 것을 자동으로 처리하므로 잘못하기가 훨씬 더 어려워집니다. XML API를 직접 작성하지 않는 한 이와 같은 세부 사항에 대해 걱정할 필요가 거의 없습니다.


11
동의한다고 말할 수 없습니다. 우리가 XML을 읽고 쓰는 방법을 이해할 필요조차 없을 정도로 우리를 추상화하기 위해 API에 너무 의존해야한다고 생각하는 것은 어리석은 것 같습니다. 그쪽으로 XML API는 아마도 당신이 잘못된 문서를 제공하고 그것이 폭발 할 때 당신에게 많은 도움이되지 않을 것입니다. 데이터를로드하려면 누군가 데이터를 수정해야합니다.
— Christopher Painter

@ChristopherPainter XML 표준의 크기를 감안할 때 실제로 그것을 이해하는 사람들이 매우 많지 않을 것입니다. 지금은 그렇게 생각하지만 실제로는 그렇게 생각하지 않는 사람들이 많습니다.
— 모니카 복원

2
음, 어딘가에서 시작해야합니다. 우리 업계의 과정에서 우리는 XML이 짜증나고 JSON과 같은 다른 것으로 다시 시작한다고 불평합니다. 그런 다음 프로세스가 반복됩니다.
— Christopher Painter

15

오래된 자주 묻는 질문에 대한 새롭고 향상된 답변 ...

XML에서 큰 따옴표를 이스케이프해야하는 경우

큰 따옴표 ( ")는 이스케이프없이 표시 될 수 있습니다 .

  • XML 텍스트 콘텐츠 :

    <NoEscapeNeeded>He said, "Don't quote me."</NoEscapeNeeded>
  • 작은 따옴표 ( ')로 구분 된 XML 속성 :

    <NoEscapeNeeded name='Pete "Maverick" Mitchell'/>

    참고 : 작은 따옴표 ( ')로 전환해도 이스케이프 처리가 필요하지 않습니다.

    <NoEscapeNeeded name="Pete 'Maverick' Mitchell"/>

큰 따옴표 ( ") 는 이스케이프해야합니다 .

  • 큰 따옴표로 구분 된 XML 속성 :

    <EscapeNeeded name="Pete &quot;Maverick&quot; Mitchell"/>

결론

큰 따옴표 ( ")는 &quot;매우 제한된 컨텍스트에서만 XML 에서처럼 이스케이프되어야 합니다.


7

이스케이프 문자는 없습니다. 대신 문자를 사용 &quot;하거나 <![CDATA["]]>표현할 수도 있습니다 ".



2

C ++에서는 EscapeXML ATL API를 사용할 수 있습니다. 이것은 특수 문자를 처리하는 올바른 방법입니다 ...


1

백 슬래시 뒤에 "u"를 입력 한 다음 문자의 유니 코드 값을 사용해 볼 수 있습니다. 예를 들어 큰 따옴표의 유니 코드 값은 다음과 같습니다.

"-> U + 0022

따라서 Android에서 XML 텍스트의 일부로 설정하면 다음과 같이 보일 것입니다.

<TextView
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:text=" \u0022 Showing double quotes \u0022 "/>

이렇게하면 TextView에 대략 다음과 같은 텍스트가 생성됩니다.

"큰 따옴표 표시"

www.unicode-table.com/en에서 대부분의 기호와 문자의 유니 코드를 찾을 수 있습니다.


여기에서 대부분의 기호와 문자의 유니 코드를 찾을 수 있습니다. unicode-table.com/en
— E-max
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.