2015-02-05 1 views
0

VB.NET 프로젝트에는 XML 문서가 임베디드 리소스로 있습니다. 나는 일반 선언 영역에서임베디드 XML 문서에 저장할 수 없습니다.

Private xmlFile as New XmlDocument() 

으로 액세스하고 있습니다. 내가 특정 노드를 발견하고 사용자의 입력에서 그들을 통해 업데이트

xmlFile.LoadXml(My.Resources.Settings) 

하는 방법에 :

'Dim xmlDoc as XmlDocument 
'xmlDoc = xmlFile 

Dim settingNodes As XmlNodeList = xmlFile.SelectNodes("//Program/ProgramTitle") 

For Each setting As XmlNode In settingNodes 
    If setting.InnerText = title Then 
     setting.ParentNode.Item("ProgramSaveFolder").InnerText = programFolder 
     setting.ParentNode.Item("PrimaryBackupFolder").InnerText = primBackup 
     setting.ParentNode.Item("SecondaryBackupFolder").InnerText = secBackup 
    End If 
Next 

' Neither of these work 
xmlFile.Save("Settings.txt") 
'xmlDoc.Save("GameSettings.txt") 

해당 xmldoc 코드는 내가 때부터입니다 그리고 나는 양식 부하 방법에 넣기하고 XmlFile이 사용 중이기 때문에 절약하지 못한다는 것을 믿을 수있게되었습니다 (나는 많은 것을 시도해 왔습니다!).

그러나 코드에서 언급했듯이 둘 중 어느 것도 작동하지 않습니다. 이 방법에 대한 예를 볼 때와 매우 비슷하지만 프로그램을 실행할 때 파일을 전혀 변경하지 않습니다.

+0

한 곳에서 가져 와서 다른 곳으로 저장하는 이유 - 이유가 무엇입니까? – OneFineDay

+0

내가 잘못하고 있다는 것을 설명해 주시겠습니까? – marky

+0

임베디드 리소스는 런타임, 스토리의 끝에서 수정할 수 없습니다. –

답변

0

포함 된 리소스를 수정할 수 없습니다. XML 파일을 내용으로 포함 할 수 있으며 File.IO 네임 스페이스 또는 XMLDocument.Load()를 사용하여로드 및 업데이트 할 수있는 일반 파일로 빌드 폴더에 나타납니다.

주목해야 할 점은 Program Files 폴더의 파일을 수정하는 중에 사용자가 가질 수없는 관리자 권한이 필요하다는 것입니다. 이 경우 파일을 AppData 폴더에 복사하는 것이 가장 좋습니다.

+0

고마워, 랜스. ClickOnce에 파일을 포함시키는 방법을 설명하는 SO 질문 (http://stackoverflow.com/questions/940025/adding-files-to-a-click-once-deployment)을 발견했습니다. 파일을 Build Action = "Content"및 "Copy if newer"로 설정합니다. 더 이상 임베디드 리소스가 아니지만 변경 사항은 저장되지 않습니다. – marky

+0

ClickOnce를 사용하지 않아서 파일을 어디에 설치하는지 잘 모르겠습니다. 관리자 권한이 필요한 디렉토리에'settings.txt' 파일이 있습니까? – Lance

+0

일반 선언 영역에서'Private xmlFile As New XmlDocument()'를 사용했고, 임베디드 리소스 일 때'xmlFile.LoadXml (My.Resources.Settings) '을 사용했지만 현재 변경되었습니다. 그런 다음 코드에서 XmlDocument.Load() 및 .Save()를 사용하고 있습니다. – marky