XML / JSON 변환

XML에서 JSON으로, JSON에서 XML로. 속성은 @, 텍스트는 #text, 배열은 문서 전체가 정하며, 정형식이 아닌 XML은 줄과 열을 알려 줍니다.

들여쓰기
입력
출력

결과가 여기에 표시됩니다

이 도구가 하는 일

XML은 대개 아무도 고르지 않은 시스템에서 옵니다. SOAP 응답, RSS 피드, 설정 파일, JSON보다 오래된 무언가에서 나온 내보내기 같은 것입니다. 그것을 써야 하는 코드가 원하는 것은 JSON입니다. 반대 경우도 그만큼 흔해서, XML만 받아들이는 시스템으로 보낼 JSON 페이로드가 그렇습니다. 이 페이지는 브라우저 안에서 양방향으로 변환하고, 두 방향 모두 하나의 고정된 규칙으로 읽으므로, 두 방향이 모든 키의 뜻에 대해 일치합니다.

이 페이지가 다른 점은 JSON의 형태를 지금 읽고 있는 요소가 아니라 문서 전체로부터 정하고, 페이지가 그 사실을 말해 준다는 것입니다. 그 결정 때문에 어떤 요소가 단독으로라면 가졌을 형태와 다른 형태가 되는 곳마다, 출력 아래의 알림이 경로와, 결정이 처음 적용된 줄과 열을 알려 줍니다. 주석이나 혼합 내용의 순서처럼 JSON에 자리가 없는 것도 사라지는 대신 같은 방식으로 알려지고, 반대 방향에서는 XML이 여러분의 JSON에 강요하는 다시 쓰기 하나하나를 그것이 일어난 자리에서 알려 줍니다.

규칙: 속성에는 @, 텍스트에는 #text

규칙은 하나뿐이며, 어떤 설정도 그것을 바꾸지 않습니다. 속성은 @ 뒤에 속성 이름을 붙여 적은 키가 되고, 요소를 다른 무언가와 나눠 가져야 하는 텍스트는 #text라는 키 아래에 들어갑니다. XML 이름은 @ 기호로도 # 기호로도 시작할 수 없으므로, 이렇게 적은 키는 자식 요소와 헷갈릴 수 없고, 그 덕분에 같은 JSON을 추측 없이 XML로 되읽을 수 있습니다. 작은 카탈로그에 비추어 보면 다음과 같습니다.

  • 루트 요소는 최상위의 유일한 키입니다. 루트 요소가 catalog인 문서는 "catalog"라는 키 하나만 가진 객체가 됩니다.
  • 텍스트만 가진 요소는 그 텍스트 자체입니다. <title>Midnight Rain</title>은 "title": "Midnight Rain"이 됩니다.
  • 속성은 자식 요소와 나란히 놓이는 키입니다. <book id="bk101">에서는 그 책에 "@id": "bk101"이 붙고, 자식 요소는 저마다 처음 나타난 순서대로 키로서 뒤따릅니다.
  • 속성과 텍스트를 가진 요소는 텍스트를 #text 아래에 둡니다. <price currency="USD">44.95</price>는 "price": {"@currency": "USD", "#text": 44.95}가 됩니다.
  • 한 부모 아래에서 반복되는 요소는 배열이 됩니다. author 요소가 두 번 나오는 책에는 "author": ["Gambardella, Matthew", "Knorr, Stefan"]이 있습니다.
  • 이름은 접두사까지 적힌 그대로 유지됩니다. <dc:title>은 "dc:title"이라는 키가 되고, 네임스페이스 선언은 "@xmlns:dc" 같은 속성 키가 되며, 무엇도 네임스페이스 URI로 해석하지 않습니다.

엔티티와 문자 참조는 디코딩되므로 &amp; 자리에는 &가, &#233; 자리에는 é가 들어오고, CDATA 구역은 그저 텍스트입니다. 요소 사이에 홀로 놓인 공백은 서식이므로 버려지고, 그 밖의 텍스트는 모두 온전히 유지되며 앞뒤가 잘리는 일도 없습니다. 그래도 규격을 따르는 모든 XML 파서가 적용하는 두 가지 정규화가 먼저 일어납니다. 텍스트에 입력한 캐리지 리턴은 줄바꿈으로 들어오고, 속성값에 입력한 탭이나 줄바꿈은 공백으로 들어옵니다. 문서가 그 둘 가운데 하나를 지키는 방법이 문자 참조입니다.

왜 문서 전체가 형태를 정하는가

요소를 하나씩 정하는 변환기는 첫 번째 책의 저자를 둘이라서 배열로 쓰고, 두 번째 책의 저자를 하나라서 문자열로 씁니다. 속성을 가진 요소는 한 레코드에서는 객체이고 다음 레코드에서는 평범한 텍스트입니다. 첫 레코드에 맞춰 작성한 코드는 두 번째에서 깨지고, 그 사이 어디에서도 형태가 바뀔 수 있다고 알려 준 것은 없었습니다.

그래서 형태는 경로마다 정합니다. 경로란 루트에서 어떤 요소까지 내려가는 요소 이름을 /catalog/book/author처럼 적은 것으로, 위치는 들어 있지 않아서 모든 책의 모든 저자가 하나의 경로 위에 놓입니다. 한 경로 위의 요소는 모두 한꺼번에 따져집니다.

  • 배열. 요소가 어느 한 부모 아래에서라도 반복되면, 경로 위의 모든 요소를 하나뿐인 것까지 포함해 배열로 씁니다.
  • 객체. 경로 위의 요소 가운데 하나라도 속성이나 자식 요소를 가지면, 그 경로의 모든 요소를 텍스트만 가진 것까지 포함해 객체로 쓰고, 텍스트는 #text 아래에 둡니다.
  • 값. 경로는 그 위의 모든 값이 변환될 때만 숫자로 읽히고, 모든 값이 true나 false일 때만 불리언으로 읽힙니다. 그 규칙은 아래 숫자와 불리언에 관한 절에서 설명합니다.
  • 빈 요소. 빈 요소는 이 결정에 끼지 않고, 그 경로가 정한 종류를 따릅니다.

결과가 요소 단독으로 되었을 것과 다른 곳마다, 페이지는 경로당 한 번 그렇게 알리고, 그 때문에 바뀐 첫 요소의 줄과 열을 함께 보여 줍니다. 한 책에는 저자가 여럿이고 다른 책에는 하나뿐인 카탈로그에서는 그 하나뿐인 저자도 여전히 배열이고, 한 가격은 currency 속성을 가지고 다른 가격은 그렇지 않은 곳에서는 속성이 없는 가격도 여전히 객체이며 텍스트는 #text 아래에 있습니다. 둘 다 알려지므로, 어느 쪽도 그것을 읽는 코드를 놀라게 하지 않습니다.

레코드가 하나뿐인 샘플, 그리고 "항상 배열" 입력란

형태는 그것을 정하는 바탕이 된 문서만큼만 좋을 수 있습니다. 책이 한 권뿐인 카탈로그를 붙여넣으면 그 책은 객체, 하나뿐인 저자는 문자열, 가격은 숫자가 되지만, 같은 카탈로그에 두 번째 책이 곁에 있으면 책들은 배열이 됩니다. 붙여넣은 것 어디에서나 한 번씩만 나오는 경로는 단일 값으로 남고, 값이 모두 우연히 변환되는 경로는 0으로 시작하는 우편번호가 든 문서가 도착할 때까지 숫자로 남습니다. JSON은 샘플이 대표성을 띠는 딱 그만큼만 믿을 수 있으므로, 가능하면 언제나 레코드를 둘 이상 붙여넣으세요.

배열에는 샘플에 기대지 않는 해결책이 있습니다. 문서가 무엇을 보여 주든 배열이어야 하는 요소 이름이나 경로를 쉼표나 공백으로 구분해 "항상 배열"에 입력하면, 지정이 일치하는 모든 경로는 한 번만 나오는 곳까지 포함해 어디서나 배열로 쓰입니다.

  • item 같은 이름만의 지정은 이름이 item인 요소로 끝나는 모든 경로에, 그것이 어디에 있든 일치합니다.
  • /rss/channel/item 같은 경로는 정확히 그 경로에만 일치하며, 출력 아래의 경로와 같은 방식으로 적으므로 거기서 복사해 올 수 있습니다.
  • 일치는 정확합니다. 대소문자를 구분하고 접두사도 이름의 일부이므로, Item은 어떤 item에도 일치하지 않고 link는 어떤 atom:link에도 일치하지 않습니다.
  • 이 입력란이 배열로 바꾼 경로는 다른 결정과 마찬가지로 하나하나 알려집니다. 이름도 경로도 아닌 지정과 문서의 어떤 요소에도 일치하지 않은 지정은 입력란 아래에 나열되고, 적용되는 지정은 계속 적용됩니다.

이 입력란은 "XML에서 JSON으로" 방향에 속합니다. 방향을 바꿨다가 되돌려도 입력한 내용은 남지만, 페이지의 다른 모든 설정과 마찬가지로 방문 사이에 보관되지는 않습니다. 값에는 그런 입력란이 없습니다. 샘플에 무엇이 들었든 텍스트로 남아야 하는 경로를 위한 것이 "숫자와 불리언 변환"을 끄는 일이며, 그 대가로 다른 모든 값도 텍스트가 됩니다.

숫자, 불리언, 그리고 02134가 텍스트로 남는 이유

XML에서는 모든 것이 텍스트이고, 숫자처럼 보이는 텍스트를 JSON 숫자로 바꾸는 것은 대개 원하는 바입니다. 하지만 그것은 우편번호 02134가 2134가 되고 긴 주문 번호가 마지막 자릿수를 잃는 길이기도 합니다. 여기의 규칙은 이 사이트의 CSV 변환 도구가 쓰는 것과 같으며, 특별한 경우의 목록이 필요 없습니다. 텍스트가 숫자가 되는 것은 그 숫자를 다시 적었을 때 텍스트와 정확히 같은 철자가 될 때뿐입니다. 42는 그러므로 변환됩니다. 02134는 그렇지 않고, 1.50, +5, 1e5, 또는 배정밀도로는 모든 자릿수를 담을 수 없을 만큼 긴 정수도 마찬가지입니다. 불리언은 소문자로 쓴 true와 false 딱 그 둘입니다.

이 페이지가 더하는 것은 그 규칙을 경로 전체에 한꺼번에 묻는다는 점입니다. 경로는 그 위의 모든 값이 변환될 때만 숫자로 읽히고, 모든 값이 불리언일 때만 불리언으로 읽힙니다. 자릿수를 잃을 값이 하나라도 있거나 한 경로에 숫자와 불리언이 함께 있으면, 거기의 모든 값이 텍스트로 남습니다. 경로 위의 속성 이름은 저마다 따로 정해집니다. 일부 값은 변환될 수 있었는데도 텍스트로 남은 경로는 경로를 밝혀 알려지며, 속성이라면 /catalog/book/@id처럼 경로가 속성에서 끝납니다.

"숫자와 불리언 변환"은 페이지가 열릴 때 켜져 있으며, CSV 페이지에서 그에 해당하는 스위치가 켜져 있는 것과 같습니다. 끄면 모든 값이 텍스트로 쓰입니다. 네임스페이스 선언의 값은 어느 쪽이든 숫자로 읽히지 않습니다. Namespaces in XML 표준이 그 값을 네임스페이스 이름, 곧 텍스트로 정의하기 때문입니다.

빈 요소, 그리고 문서가 스스로 밝히는 null

  • 빈 요소는 그 경로가 정한 종류를 따릅니다. 텍스트 경로에서는 빈 문자열입니다. 숫자나 불리언 경로에서는 null이고, 페이지가 그렇다고 알립니다. 단독으로라면 그 요소는 빈 텍스트였을 것이기 때문입니다.
  • 비었다는 것은 아무것도 없다는 뜻입니다. <zip> </zip>은 공백을 담고 있고, 공백은 텍스트입니다.
  • 모든 요소가 비어 있는 경로는 텍스트이므로 그 각각이 빈 문자열입니다. 거기에는 숫자로 읽히는 것이 없고, null은 문서가 한 번도 준 적 없는 정보가 될 것입니다.
  • 객체로 쓰이는 경로에서는, 경로 위의 다른 요소가 텍스트를 가지는 곳마다 빈 요소에도 #text가 붙으며, 같은 규칙에 따라 비어 있거나 null입니다. <price currency="USD">5</price> 곁의 <price/>는 {"#text": null}이 됩니다. src 속성만 가진 이미지 요소처럼 경로 위의 어떤 요소도 텍스트를 가지지 않는 곳에서는, 어느 요소에도 #text가 붙지 않습니다.

문서는 null을 스스로 밝힐 수도 있습니다. xsi:nil="true"로 표시되고 그 접두사가 XML Schema instance 네임스페이스에 묶인 요소는, "숫자와 불리언 변환"이 어떻게 설정되어 있든 어느 경로에서나 null입니다. 그 표시는 문서가 데이터가 아니라 null이라고 말하는 방식이므로, 그 속성도, 다른 것은 묶지 않는 네임스페이스 선언도 JSON에 나타나지 않습니다. 그 네임스페이스에 묶인 접두사라면 무엇이든 되며, i:nil="1"도 같은 것을 말합니다. xsi:nil="false"는 평범한 데이터이고, nil로 표시되었는데도 여전히 내용을 가진 요소는 있는 그대로 둡니다. 그것을 null로 읽으면 그 내용을 아무 말 없이 버리게 되기 때문입니다.

JSON에 자리가 없는 것은 사라지지 않고 알려진다

XML 문서가 담은 것 가운데 일부는 JSON에 자리가 없습니다. 의미를 지닌 것은 조용히 버려지는 대신 출력 아래에서 알려집니다.

  • 혼합 내용의 순서. <p>Hello <b>world</b>, again</p>에서 텍스트는 #text 아래에 "Hello , again"으로 모이고, b 요소는 "b" 아래에 들어갑니다. 모든 문자와 모든 요소는 살아남지만, 놓여 있던 순서는 그렇지 않습니다. 이름이 번갈아 나오는 자식 요소도 같은 식으로 순서를 잃습니다. 이것은 그 내용을 가진 요소의 경로마다 한 번, 순서가 정말로 사라진 곳에서만 알려지므로, <p><b>Note:</b> the rest</p>에서는 아무것도 나오지 않습니다. 키의 순서가 그것을 지켜 주기 때문입니다.
  • 주석과 처리 명령. 이것들은 빠지며, 종류마다 알림 하나가 몇 개였는지와 첫 번째 것이 어디에 있는지를 알려 줍니다.
  • DOCTYPE. 이것도 빠지며, 그 알림은 DTD를 적용하지 않았다고 말합니다. 이 도구는 DTD를 읽지 않으므로, DTD가 속성에 선언한 기본값은 JSON에 없습니다.
  • 맨 위의 XML 선언. 이것은 알림 없이 빠집니다. 데이터가 무엇인지가 아니라 텍스트가 어떻게 인코딩되었는지를 나타내기 때문입니다.

JSON을 XML로 되돌리기: 가장 가까운 XML, 그리고 하나하나 알려지는 다시 쓰기

방향을 바꾸면 같은 규칙이 반대로 작동합니다. @ 키는 속성이 되고, #text는 그 요소의 텍스트가 되며, 배열은 항목마다 요소 하나가 되고, 그 밖의 키는 자식 요소가 되는데, 자식 요소는 키가 놓인 순서대로 옵니다. null은 xsi:nil="true"로 표시된 빈 요소로 쓰이며, XML Schema instance 네임스페이스는 null을 쓸 때만 루트 요소에 한 번 선언됩니다. 그래서 다시 변환하면 빈 문자열이 아니라 다시 null이 됩니다. 파싱되지 않는 JSON이나 변환하기에는 너무 깊이 중첩된 JSON을 빼면 거부되는 것은 없습니다. 여러분의 JSON이 XML로는 있는 그대로 담을 수 없는 형태인 곳에서는 가장 가까운 정형식 XML을 쓰고, 그 다시 쓰기를 출력 아래에서, 이 사이트의 JSONPath 테스터에 붙여넣을 수 있는 JSONPath와 함께 알려 줍니다.

  • 루트 요소가 정확히 하나가 아닌 것은 — 최상위에 키가 여럿이든, 하나도 없든, 최상위 배열이든, 맨 값이든 — <root> 안에 쓰입니다.
  • XML 이름이 아닌 키는 옆의 다른 키가 쓰지 않는 가장 가까운 이름으로 쓰입니다. first name은 first_name으로, 1st는 _1st로 바뀝니다.
  • 어떤 키도 이름을 붙이지 않는 배열의 항목은, 다른 배열 안에 있든 최상위에 있든 <item> 요소로 쓰입니다.
  • 객체나 배열을 가진 @ 키나 #text는 자식 요소로 쓰입니다. 속성도 텍스트도 그런 것을 담을 수 없기 때문입니다.
  • null을 가진 @ 키는 빠지고, 자식 요소 곁에서 null을 가진 #text도 빠집니다. XML은 요소 전체에 대해서만 null이라고 말하기 때문입니다.
  • XML 1.0이 참조로도 담을 수 없는 문자는 대체되며, 페이지가 그 위치를 알려 줍니다.

이스케이프는 정형식 XML을 쓰는 일의 일부이지 선택 사항이 아닙니다. < 문자와 & 문자는 언제나 이스케이프됩니다. 속성값 안에서는 큰따옴표도 이스케이프됩니다. 값이 큰따옴표 두 개 사이에 쓰이기 때문입니다. 거기서 탭, 줄바꿈, 캐리지 리턴은 문자 참조로 쓰입니다. 그러지 않으면 파서가 그것을 공백으로 바꾸기 때문입니다. 텍스트 안에서 캐리지 리턴은 참조로 쓰입니다. 그러지 않으면 파서가 그것을 줄바꿈으로 바꾸기 때문이며, ]]> 문자열은 결코 있는 그대로 쓰이지 않습니다. 그래서 값이 여러분이 쓴 그 값으로 되읽힐 수 있습니다.

되돌리면 무엇이 되는지, 변환하기 전에 알려 준다

어떤 XML은 정형식인데도 그것을 쓴 바탕인 JSON과 다른 것으로 되읽힙니다. 그래서 페이지는 방금 쓴 XML을 반대 방향이 쓰는 것과 같은 규칙으로 읽고, 답이 다른 곳을 알려 줍니다. 항목이 하나인 배열은, 같은 요소가 문서의 다른 어딘가에서 한 부모 아래 반복되지 않는 한, 그 하나뿐인 항목으로 되읽힙니다. 빈 배열은 요소를 쓰지 않고 빈 #text는 텍스트를 쓰지 않으므로, 둘 다 아무것도 없는 것으로 되읽힙니다. 속성이나 자식 요소로 쓰이는 것을 아무것도 가지지 않은 객체는 단순한 값으로 되읽히며, 다른 곳의 같은 요소 때문에 여러분의 JSON에 없던 배열이나 객체를 문서가 정하게 되는 곳도 마찬가지로 알려 줍니다. 이 모두는 여러분의 JSON에 있는 그대로 쓰이고, 알려집니다.

"입력으로 사용"은 출력을 입력란으로 옮기고 방향을 바꾸므로, 무엇이 돌아오는지와 그것이 무엇을 알리는지를 클릭 한 번으로 볼 수 있습니다. 아무것도 알려지지 않는 곳에서는, XML이 지니지 않는 것을 빼면 돌아오는 것은 여러분의 JSON입니다. XML 텍스트는 값이 숫자였는지, 불리언이었는지, 문자열이었는지를 기록하지 않습니다. "숫자와 불리언 변환"이 켜져 있으면 숫자를 정확히 적은 문자열이 그 숫자로 돌아올 수 있고, 꺼져 있으면 모든 값이 텍스트로 돌아옵니다. 그리고 속성, 또는 비어 있거나 null인 #text는 곁의 키들 사이에서 다른 자리로 돌아올 수 있습니다. XML은 그 자리를 지니지 않기 때문입니다.

XML 쪽에서 출발하는 왕복은 일부러 더 적게 약속합니다. 붙여넣은 텍스트는 돌아오지 않습니다. 선언, 서식, 주석, 그리고 나가는 길에 알려진 그 밖의 모든 것은 사라집니다. 변하지 않는 것은 페이지가 쓰는 XML입니다. 그것을 같은 설정으로 JSON으로 변환했다가 다시 되돌리면 같은 XML이 돌아옵니다.

XML이나 JSON을 읽을 수 없을 때

XML 파서가 읽을 수 없는 문서는 무엇이 잘못되었는지 말하는 문장과 함께 거부되며, 알려 줄 위치가 있는 곳에서는 줄과 열도 함께 나옵니다. 닫히지 않은 요소, 따옴표로 감싸지 않은 속성값, 참조를 시작하지 않는 &에는 저마다 따로 문장이 있습니다. 아직 열려 있는 요소와 짝이 맞지 않는 닫는 태그는 그렇다고 말한 뒤 그 요소에 필요한 닫는 태그를 보여 주며, 그 태그가 열린 채 남은 요소의 이름을 알려 줍니다. 파싱되지 않는 JSON도 같은 방식으로 거부되며, 잴 수 있는 곳에서는 파서가 멈춘 줄과 열이 함께 나옵니다.

위치를 알려 주는 문장 아래에는, 문제의 문자에 표시를 한 여러분 자신의 줄이 보입니다. 이것은 문서 전체가 한 줄인 압축된 XML이나 JSON에서 가장 중요합니다. 긴 줄은 표시 주변 구간만 남기고 잘리며, 잘린 곳에는 줄임표가 붙습니다. 텍스트의 끝, 탭, 바이트 순서 표시처럼 아무것도 그리지 않는 문제의 문자는 눈에 보이는 대체 표시 위에 표시됩니다. 열은 JavaScript가 문자열을 세는 방식대로 UTF-16 코드 단위로 세므로, 표시 앞에 이모지나 드문 한자가 있으면 열이 하나가 아니라 둘 늘어납니다.

사이트가 허용하는 것보다 깊이 중첩된 문서도 어느 방향에서든 거부되며, 그 문장이 한도를 밝힙니다.

자주 묻는 질문

왜 하나뿐인 요소가 배열로 쓰이나요?
같은 경로 위의 요소가 문서의 다른 어딘가에서 한 부모 아래 반복되고, 경로는 문서 전체에 대해 한 번 정해지기 때문입니다. 그러면 값을 배열로 읽는 코드가, 요소가 하나뿐인 레코드를 포함해 모든 레코드에서 동작합니다. 페이지는 경로를 밝히고, 이것 때문에 바뀐 첫 요소의 줄과 열을 함께 보여 줍니다. 샘플에 하나만 있는 곳에서 배열을 얻으려면 그 요소를 "항상 배열"에 적으세요.
제 JSON에서 숫자가 왜 따옴표 안에 있나요?
같은 경로 위의 어떤 값이 숫자로는 살아남지 못하기 때문입니다. 앞의 0, 소수점 뒤 끝의 0, 더하기 기호, 지수 때문이거나, 그 경로에 숫자와 불리언이 함께 있기 때문입니다. 그런 경로는 어디서나 텍스트이고, 페이지가 그 경로를 밝힙니다. 그 값들은 하나하나가 숫자를 다시 적었을 때의 모양, 곧 02134가 아니라 2134로 적히면 변환됩니다.
주석, 처리 명령, DOCTYPE은 어떻게 되나요?
JSON에서 빠지며, 종류마다 몇 개였는지와 첫 번째 것이 어디에 있는지가 알려집니다. DOCTYPE 알림은 DTD를 적용하지 않았다는 것도 말하므로, 그 DTD가 선언한 속성 기본값은 없습니다.
제 XML을 DTD나 XSD와 대조해 확인하나요?
아니요. 정형식 XML을 읽고 문서를 읽지 못한 곳을 알려 주지만, DTD나 XSD에 대해 검증하지 않으며, DTD가 선언하는 것을 아무것도 적용하지 않습니다. 그래서 DOCTYPE은 조용히 무시되는 대신 적용하지 않았다고 알려집니다.
XML에서 null은 어떻게 쓰이고, 다시 돌아오나요?
xsi:nil="true"로 표시된 빈 요소로 쓰이며, XML Schema instance 네임스페이스는 루트 요소에 한 번 선언됩니다. 그 XML을 다시 변환하면 다시 null이 됩니다. 평범한 빈 요소였다면 텍스트로 읽히는 경로에서는 어디서나 빈 문자열로 돌아왔을 것입니다. 여러분의 JSON이 이미 자기 이름에 xsi라는 접두사를 쓰고 있다면, 페이지는 대신 쓰이지 않은 접두사를 선언합니다.
공백이 들어 있는 키는 어떻게 되나요?
XML이 허용하는 가장 가까운 이름으로 쓰이므로 first name은 first_name이 되고, 페이지는 그 키를 JSONPath로 밝히며 바뀐 이름을 함께 보여 줍니다. 그 JSONPath를 이 사이트의 JSONPath 테스터에 붙여넣으면 그 다시 쓰기가 적용된 모든 값을 선택할 수 있습니다.
왜 다시 변환해도 원래 XML이 나오지 않나요?
XML 파일이 담은 것 가운데 일부 — 선언, 요소 사이의 서식, 주석, 처리 명령, DOCTYPE, 혼합 내용의 순서 — 는 JSON에 자리가 없기 때문입니다. 의미를 지닌 것은 나가는 길에 알려졌습니다. 변하지 않는 것은 페이지가 쓰는 XML입니다. 그것을 같은 설정으로 JSON으로 가져갔다가 다시 되돌리면 같은 XML이 돌아옵니다.
제가 붙여넣은 것이 서버로 전송되나요?
아니요. 두 방향 모두 전적으로 브라우저 안에서 도므로, 붙여넣은 문서가 API 응답이든 피드든 자격 증명이 든 설정 파일이든 기기 밖으로 나가지 않습니다.

관련 도구