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.