아래 위치 코드를 사용하여 설치된 위치에서 xml 파일을 로컬 폴더로로드합니다.xml 파일을 uwp 응용 프로그램으로로드 C#
// Has the file been copied already?
bool blFileExist = false;
try
{
await ApplicationData.Current.LocalFolder.GetFileAsync("settings.xml");
// No exception means it exists
blFileExist = true;
}
catch (System.IO.FileNotFoundException)
{
// The file obviously doesn't exist
blFileExist = false;
}
catch (Exception)
{
}
if (!blFileExist)
{
try
{
// Cant await inside catch
StorageFile file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync("settings.xml");
await file.CopyAsync(ApplicationData.Current.LocalFolder);
}
catch (System.IO.FileNotFoundException)
{
}
catch (Exception)
{
}
}
다음으로 필요할 때로드하십시오.
private async void loadSettings()
{
try
{
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("settings.xml");
using (Stream fileStream = await file.OpenStreamForReadAsync())
{
doc = XElement.Load(fileStream);
}
}
catch (System.IO.FileNotFoundException ex)
{
}
catch (Exception ex)
{
}
}
마지막으로 이것을 사용하여 로컬 폴더에 다시 저장합니다.
private async void saveSettings()
{
try
{
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("settings.xml");
using (Stream fileStream = await file.OpenStreamForWriteAsync())
{
//Save URLs
doc.Save(fileStream);
}
}
catch (System.IO.FileNotFoundException ex)
{
}
catch (Exception ex)
{
}
}
코드가 컴파일되고 실행되며 오류는 발생하지 않지만 예상대로 수행되지 않습니다. 이 코드에서 단계 및 오류를 던지고는 라인에 도달 catch 블록에 스테핑 것처럼를 호출하는 방법에 돌아갑니다 두 번째 코드 블록의 코드를 사용하여 파일을로드 할 때
using (Stream fileStream = await file.OpenStreamForReadAsync())
완전히 확신 할 수는 없지만 인코딩 및 바이트 순서 표시가 될 수도 있습니다. 어떤 제안?
다음은 해당 XML입니다.
<?xml version="1.0" encoding="utf-8" ?>
<settings>
<feeds>
<url name="All">http://services.parliament.uk/calendar/all.rss</url>
<url name="CommonsMainChamber">http://services.parliament.uk/calendar/commons_main_chamber.rss</url>
<url name="CommonsSelectCommittee">http://services.parliament.uk/calendar/commons_select_committee.rss</url>
<url name="CommonsGeneralCommittee">http://services.parliament.uk/calendar/commons_general_committee.rss</url>
<url name="CommonsWestminsterHall">http://services.parliament.uk/calendar/commons_westminster_hall.rss</url>
<url name="LordsMainChamber">http://services.parliament.uk/calendar/lords_main_chamber.rss</url>
<url name="LordsGrandCommittee">http://services.parliament.uk/calendar/lords_grand_committee.rss</url>
<url name="LordsSelectCommittee">http://services.parliament.uk/calendar/lords_select_committee.rss</url>
<url name="ParliamentaryNews">http://www.parliament.uk/g/RSS/news-feed/?pageInstanceId=209</url>
<url name="CommonsNews">http://www.parliament.uk/g/RSS/news-feed/?pageInstanceId=25366</url>
<url name="LordsNews">http://www.parliament.uk/g/RSS/news-feed/?pageInstanceId=25367</url>
<url name="CommitteeNews">http://www.parliament.uk/g/RSS/news-feed/?pageInstanceId=25388</url>
<url name="CommonsBriefingPapers">http://researchbriefings.parliament.uk/rssfeed/Commons%20Briefing%20papers</url>
<url name="LordsLibraryNotes">http://researchbriefings.parliament.uk/rssfeed/Lords%20Library%20notes</url>
<url name="LordsInFocus">http://researchbriefings.parliament.uk/rssfeed/Lords%20In%20Focus</url>
<url name="POSTBriefs">http://researchbriefings.parliament.uk/rssfeed/POSTbriefs</url>
<url name="POSTNotes">http://researchbriefings.parliament.uk/rssfeed/POSTnotes</url>
<url name="EarlyDayMotions">http://www.parliament.uk/g/rss/generic/?pageInstanceId=78055&type=Edms</url>
</feeds>
</settings>
catch 블록을 가져올 때 예외는 무엇입니까? –
settings.xml 파일의 내용은 무엇입니까? – mm8
켄, 내가 말했듯이, 내가 알고있는 어떤 오류도 던지지 않고있다. – luigivampa