2013-11-26 2 views
1

웹 서비스를 사용하는 Android 앱을 만들려고합니다. XDocument을 사용하여 XML 파일을 읽으 려합니다. 내 프로젝트에 xmlfolder이라는 폴더를 만들었고 내 XML 파일 myxml을 그 안에 넣었습니다.XDocument를 사용하여 xml 파일 읽기

나는 다른 솔루션을 시도 했으므로 How to load XML file located inside the folder of the application in window phone 7?처럼 작동하지 않습니다. 계속 오류가 발생합니다.

System.IO.DirectoryNotFoundException: Could not find a part of the path "/xmlfolder/myxml.xml".

if (string.IsNullOrEmpty(myFIileXML)) 
{ 
    XDocument loadedData = XDocument.Load ("xmlfolder/myxml.xml"); 
    myFileXML = loadedData.ToString(); 
} 
+0

[XDocument XML 파일을 네임 스페이스가있는 루트 요소와 함께 읽을 수있는 복제본] (http://stackoverflow.com/questions/19142606/xdocument-reading-xml-file-with-root-element-having-namespaces) – Monika

+0

Are Are 당신의 파일은'content'와'copy always'로 설정되어 있습니까? – MarcinJuraszek

+0

@Monika는 답장을 보내 주셔서 감사합니다. 하지만 이미 그 링크를 통과했지만 내 문제를 해결하지 않는 것 같습니다. 그 파일을 찾을 수 없습니다. – user3034944

답변

4

내가 올바르게 상대 경로를 지정하지 않을 생각 : 여기

myxml.xml myxml is null 

내가 시도 무언가이다. 너도 빠졌어. myxmlxml에서, 나는 그것이 당신의 게시물의 오타 일 뿐이라고 추측합니다. 대신이 시도 : 안드로이드로 모든 앱 파일이 필요합니다 곳

XDocument loadedData = XDocument.Load ("../xmlfolder/myxml.xml"); 
+0

예, 내 잘못 .. 오타되었습니다. 내 컴퓨터에서 myxml.xml의 정확한 위치를 지정해야합니까? 예 : C : \ Users \ pc \ Documents \ Projects \ MyProject \ MyProject \ xmlFiles \ myxml – user3034944

+0

이렇게하면 절대 경로가 지정됩니다. Windows에서 위와 같이 할 수있는 상대 경로를 사용할 수도 있습니다. 아마도 차이점을 읽어보십시오. –

+0

나는 당신이 제안한 것을 시도했지만 여전히 동일한 오류가 발생합니다. – user3034944

0

아직 발견하지 않은 경우, 안드로이드 프로젝트에 좋은 ResourceAssets 폴더가이이다. 그들은 수업이 아니면 밖에 살 수 없습니다. 이 경우 파일을 Assets 폴더에 넣고 파일의 빌드 조치를 AndroidAsset으로 표시하십시오. 이 방법은 같은 파일에 액세스 할 수 있습니다

using (var sr = Assets.Open("myxml.txt")) 
{ 
    var data = XDocument.Load(sr); 
} 
+0

감사합니다. 나는 당신의 솔루션을 시험해 보았는데, 이제 파일을 Assets 폴더에 넣었지만 Java.IO.FileNotFOundException을 얻는다. – user3034944

+0

빌드 액션을 'AndroidAsset'으로 설정 했습니까? – Cheesebaron

+0

예 AndroidAsset에 설정했습니다. – user3034944

0

안드로이드에 대한 현재 작업 디렉토리가 쓰기 가능하지 않은, / (그리고 응용 프로그램 파일을 포함하지 않습니다). 따라서 오류 메시지 :

System.IO.DirectoryNotFoundException: Could not find a part of the path "/xmlfolder/myxml.xml". 

해결 방법은 실제로 존재하는 경로를 사용하는 것입니다. System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal). 또한이 경로를 '다른 위치'에 만들어야합니다 (예 : Directory.CreateDirectory().

그렇지 않은 경우 빌드 동작EmbeddedResourceAssembly.GetManifestResourceStream()을 사용하는 것이 좋습니다.