2012-05-18 3 views
1
나는 .XML 파일에 이미지 ID를 추가하려면 아래의 코드를 사용하고

:어도비 에어 -를 FileMode.APPEND

.XML 출력은 다음과 같습니다
var xmlGallery:XML =new XML ('<ENTRY "IMG_ID="' +img_id+'"/>') 

var fGallery:File = File.applicationStorageDirectory.resolvePath("gallery.xml"); 
var sGallery:FileStream = new FileStream(); 

sGallery.open(fGallery,FileMode.APPEND); 
sGallery.writeUTFBytes(xmlGallery.toXMLString()); 

:

<ENTRY "IMG_ID="1"/> 
<ENTRY "IMG_ID="2"/> 
<ENTRY "IMG_ID="3"/> 

I 항목 위에 <?xml version="1.0" encoding="utf-8"?>을 추가해야합니다. 어떻게 수행하나요?

감사합니다. Uli

답변

0

XML 노드를 파일에 추가하기 전에 단순히 문자열을 쓰지 않는 이유는 무엇입니까? 시도 :

sGallery.open(fGallery, FileMode.APPEND); 
sGallery.writeUTF("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); 
sGallery.writeUTFBytes(xmlGallery.toXMLString()); 

업데이트 : OP의 의견에 따라 문제 문에 변경 :

소스 코드를 보지 않고 말을하기가 어렵습니다. 이해할 수있는 것은 동일한 XML 파일을 여러 번 업데이트한다는 것입니다. 파일이 존재하거나하지 않을 경우는 XML 선언과 GALLERY 열고 닫는 태그를 생성하고 추가하지 않을 경우

  • ,

    • 확인 :이 경우에 당신의 가장 좋은 방법은 다음을 수행하는 것입니다
    • 합니다 (GALLERY 요소 즉)는 유형 XML
    • 추가의 객체 파일에 아무것도에게
  • 읽기를하지 않는다 존재하는 경우 E4X
  • 당신이 파일

또한 살펴 보셔야로 다시 저장 XML 객체를 수정/추가 완료 (AS3에서 XML 처리의 권장되는 방법)을 사용하여이 개체에 대한 모든 자식 요소 asx3m XML 직렬화 라이브러리 here.

+0

죄송합니다. 작동하지 않습니다. 결과는 다음과 같습니다 (모든 항목에 인코딩 추가됨) : Uli

+0

@Uli : 아하! 파일을 여러 번 열고 항목을 추가하는 것 같습니까? 그렇다면 이미지 데이터 처리를 시작하기 전에 한 번 파일을 엽니 다 (또는 무엇이든) XML 문서 선언을 작성하고 닫은 다음 추가를 계속하십시오. – dirkgently

+0

OK 이렇게 했어요 :'sGallery.openAsync (fGallery, flash.filesystem.FileMode.UPDATE); sGallery.writeUTFBytes (""); sGallery.openAsync (fGallery, flash.filesystem.FileMode.APPEND); sGallery.writeUTFBytes (xml) 아마도 누군가에게 도움이 될지도 모른다. ** WRITE ** 대신에 ** UPDATE **를 사용했습니다. – Uli

관련 문제