Python에서 JSON을 XML로 변환
SO에 대해 XML을 JSON으로 변환하는 방법에 대해 질문하는 많은 질문이 있습니다만, 그 반대로 하고 싶습니다.JSON을 XML로 변환하기 위한 python 라이브러리가 있습니까?
편집: 즉시 아무것도 반환되지 않았기 때문에 이 문제를 해결하는 스크립트를 작성했습니다.
Python은 이미 JSON에서 네이티브 dict로 변환할 수 있도록 하고 있습니다.json
또는 버전 2.6 이하에서는simplejson
네이티브 딕트를 XML 문자열로 변환하는 라이브러리를 작성했습니다.
https://github.com/quandyfactory/dict2xml
int, float, boolean, string(및 unicode), 배열 및 dict 데이터 유형 및 임의 중첩(yay recursion)을 지원합니다.
8시간이 지나면 답변으로 올리겠습니다.
바로 돌아오는 게 없어서 이 문제를 해결하는 대본을 썼어요.
Python은 이미 JSON에서 네이티브 dict로 변환할 수 있도록 하고 있습니다.json
또는 버전 2.6 이하에서는simplejson
네이티브 딕트를 XML 문자열로 변환하는 라이브러리를 작성했습니다.
https://github.com/quandyfactory/dict2xml
int, float, boolean, string(및 unicode), 배열 및 dict 데이터 유형 및 임의 중첩(yay recursion)을 지원합니다.
이러한 패키지가 없는 경우 다음을 시도해 보십시오.
def json2xml(json_obj, line_padding=""):
result_list = list()
json_obj_type = type(json_obj)
if json_obj_type is list:
for sub_elem in json_obj:
result_list.append(json2xml(sub_elem, line_padding))
return "\n".join(result_list)
if json_obj_type is dict:
for tag_name in json_obj:
sub_obj = json_obj[tag_name]
result_list.append("%s<%s>" % (line_padding, tag_name))
result_list.append(json2xml(sub_obj, "\t" + line_padding))
result_list.append("%s</%s>" % (line_padding, tag_name))
return "\n".join(result_list)
return "%s%s" % (line_padding, json_obj)
예를 들어 다음과 같습니다.
s='{"main" : {"aaa" : "10", "bbb" : [1,2,3]}}'
j = json.loads(s)
print(json2xml(j))
결과:
<main>
<aaa>
10
</aaa>
<bbb>
1
2
3
</bbb>
</main>
json.loads를 사용하여 dict에 로드한 후 이 질문의 내용을 사용합니다.
사용하다dicttoxml
JSON을 XML로 직접 변환하다
인스톨
pip install dicttoxml
또는
easy_install dicttoxml
In [2]: from json import loads
In [3]: from dicttoxml import dicttoxml
In [4]: json_obj = '{"main" : {"aaa" : "10", "bbb" : [1,2,3]}}'
In [5]: xml = dicttoxml(loads(json_obj))
In [6]: print(xml)
<?xml version="1.0" encoding="UTF-8" ?><root><main type="dict"><aaa type="str">10</aaa><bbb type="list"><item type="int">1</item><item type="int">2</item><item type="int">3</item></bbb></main></root>
In [7]: xml = dicttoxml(loads(json_obj), attr_type=False)
In [8]: print(xml)
<?xml version="1.0" encoding="UTF-8" ?><root><main><aaa>10</aaa><bbb><item>1</item><item>2</item><item>3</item></bbb></main></root>
dictoxml에 대한 자세한 내용은
찾았다xmltodict
유용하게 쓰입니다.여기 게시물 몇 개에 나온 것 같아요.https://pypi.org/project/xmltodict/
import xmltodict
import json
sample_json = {"note": {"to": "Tove", "from": "Jani", "heading": "Reminder", "body": "Don't forget me this weekend!"}}
#############
#json to xml
#############
json_to_xml = xmltodict.unparse(sample_json)
print(json_to_xml)
#############
#xmlto json
#############
x_to_j_dict = xmltodict.parse(json_to_xml)
x_to_j_string = json.dumps(x_to_j_dict)
back_to_json = json.loads(x_to_j_string)
print(back_to_json)
from json import loads
from dicttoxml import dicttoxml
s='{"main" : {"aaa" : "10", "bbb" : [1,2,3]}}'
xml = dicttoxml(loads(s))
데이터가 팬더에 저장되어 있다면data.frame
내가 자주 말하듯이:
df['xml'] = df['json'].apply(lambda s: dicttoxml(json.loads(s))
언급URL : https://stackoverflow.com/questions/8988775/convert-json-to-xml-in-python
'programing' 카테고리의 다른 글
GUID에 의한 투고 취득 (0) | 2023.02.27 |
---|---|
Word press POST인지 PAGE인지 확인하는 방법 (0) | 2023.02.27 |
Swift 개체를 사전으로 변환하는 방법 (0) | 2023.02.27 |
Spring Boot에서 Error Page Filter를 비활성화하려면 어떻게 해야 합니까? (0) | 2023.02.27 |
Wordpress에서 현지화된 스크립트의 Data 매개 변수 업데이트 (0) | 2023.02.27 |