지난 몇 시간 동안 LINQ와 Windows Phone 7의 XML에 어려움을 겪었습니다. 기존 XML 파일에 새 요소를 추가하기 만하면됩니다.LINQ to XML을 사용하여 Windows Phone 7의 기존 XML 파일에 새 요소를 추가하려면 어떻게해야합니까?
XElement newItem = new XElement("item",new XAttribute("id",3),
new XElement("content","Buy groceries"),
new XElement("status","false"));
IsolatedStorageFile isFile = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream stream = new IsolatedStorageFileStream("/Items.xml", System.IO.FileMode.Open, isFile);
XDocument loadedDoc = XDocument.Load(stream);
loadedDoc.Add(newItem);
loadedDoc.Save(stream);
일반적으로 매우 이상한 동작이 발생합니다. 때로는 "IsolatedStorageFileStream
에서 허용되지 않는 작업"오류가 발생합니다. 때로는 "루트 요소가 누락되었습니다."때로는 "예기치 않은 XML 선언입니다 .XML 선언은 문서의 첫 번째 노드 여야하며 앞에 공백 문자를 표시 할 수 없습니다." 예를 들어, System.IO.FileMode.Open
을 Create로 변경하면 "루트 요소가 없습니다."라는 메시지가 표시되지만 그 이외의 오류가 발생하는 패턴은없는 것 같습니다.
<?xml version="1.0" encoding="utf-8" ?>
<items>
<item id="1">
<content>Get groceries</content>
<status>false</status>
</item>
<item id="2">
<content>Wash your car</content>
<status>true</status>
</item>
</items>
그것은 그보다 간단을하지 않고 내가 선언에 전에 공백이없는 절대적으로 확신 :
이 모든 문제의 원인은 내 XML 파일처럼 보인다 실제 XML 파일 그리고 그 모든 것을 더욱 이상하게 만들기 위해서 나는 XML 파일에 같은 기술을 쓰는 작은 샘플 애플리케이션을 다운로드했다. 나는 그것을 실행하려고하면 나는 아주 익숙한 오류가 점점 오전 : 나는 윈도우 폰 SDK 7.1 베타 설치 http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/12/06/windows-phone-7-linq-to-xml-corruption.aspx/
어제 : 여기
Unexpected XML declaration. The XML declaration must be the first node in the document, and no white space characters are allowed to appear before it.
그 스레드 링크입니다. 그것이 문제의 원인 일 수 있습니까?
격리 된 저장소에서 xml 파일을 찾는 것이 문제인 것처럼 보입니다. 나는 완전히 새로운 프로젝트와 새로운 xml 파일을 만들었습니다. 여전히 점점
// Constructor
public MainPage()
{
InitializeComponent();
var isFile = IsolatedStorageFile.GetUserStoreForApplication();
var stream = isFile.OpenFile("file.xml", System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite);
}
I'am : : 작업 IsolatedStorageFileStream에 허용되지
내가 가지고있는 유일한 코드를 이잖아. file.xml의 속성을 변경하려고 시도했지만 출력 디렉토리에 작업을 복사했지만 작동하지 않았습니다.
isFile.Dispose();
내가 조건부 문을 추가 시도 : 내가 추가하는 시도
if (isFile.FileExists("file.xml"))...
을하지만 그는 파일을 찾을 수 없습니다.
난 그렇게 내 인생에 붙어 적이있다. 제발 조언 해주세요.
불행히도 내 코드는 "XDocument loadedDoc = XDocument.Load (stream);" 나는 "루트 요소가 없어지는 것"을 얻고있다. 그래서 나는 그것을 시험해 볼 수 없다. – Booyaches
당신이 제안한대로 ** 문장을 사용하여 ** 시도했지만 XDocument loadedDoc = XDocument.Load (stream);에서 "Root element missing"을 얻었습니다. 일반적으로 XML 파일을 스트림으로로드하는 데 문제가있는 것 같습니다. – Booyaches
@Booyaches : 파일이 비어 있음을 의미합니다. – SLaks