2012-11-26 4 views
1

원본 XML 파일 인 경우 XML 파일에 예상치 못한 변화를 가져 오기 :사용 파이썬/여기 elementtree

<?xml version="1.0" encoding="UTF-8"?> 
<TVAMain xml:lang="en-GB" xmlns="urn:tva:metadata:2010" xmlns:tva2="urn:tva:metadata:extended:2010" xmlns:yv="http://refdata.youview.com/schemas/Metadata/2012-10-16" xmlns:mpeg7="urn:tva:mpeg7:2008" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://refdata.youview.com/schemas/Metadata/2012-09-26 ../schemas/youview_metadata_2012-09-26.xsd"> 
<!-- --> 
    <ProgramDescription> ............................. 

나는 XML의 내용의 일부를 변경 (하지만 내가 여기에 게시 한, 그 코드는해야) 변경되지, 새로운 XML 파일에 쓸 수 있지만 새로운 XML 파일의 내용은 다음과 같이된다 :

<?xml version='1.0' encoding='UTF-8'?> 
<TVAMain xmlns="urn:tva:metadata:2010" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://refdata.youview.com/schemas/Metadata/2012-09-26 ../schemas/youview_metadata_2012-09-26.xsd" xml:lang="en-GB"> 

    <ProgramDescription>.................... 

당신은 어떤 내용이 손실되고, 순서는 변경되는 것을 볼 수 있습니다, 어떻게해야합니까 XML에 대한 변경을 피하기 위해서?

답변

0

XML 태그의 속성에는 고정 된 순서가 없으므로 순서를 변경해도 의미가 변경되지 않습니다.

ElementTree는 실제로 사용중인 네임 스페이스에 대해서만 네임 스페이스 한정자를 씁니다. 귀하의 예제는 매우 간단하지만, 나는 그것이 yvmpeg7 네임 스페이스를 전혀 사용하지 않는다고 생각합니다.

+0

예,이 네임 스페이스는이 XML 파일에서 사용되지 않지만이 XML 파일을 사용하여 HTTP 요청을 구성하고 서버에 게시하고 싶습니다. 네임 스페이스를 잃어 버리면 게시 할 때 성공하지 못합니다. , 나는 처음 두 라인을 원점 라인으로 대체하려고 시도했다. 그런 다음 작동한다. 그래서이 '기본'삭제를 피하는 것이 궁금하다. – user1853170

+0

그래서 네임 스페이스가 누락되면 대상 서버가 데이터를 받아들이지 않는다? 서버의 오류입니다. 아마도 네임 스페이스를 수동으로 직접 추가 할 수 있습니다. http://effbot.org/zone/element-namespaces.htm을 참조하십시오. –

관련 문제