3

これは、xmlにデータを追加するための私のコードです。

IsolatedStorageFile isstore = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream bookfile = new IsolatedStorageFileStream("People.xml", System.IO.FileMode.Open, isstore);

XDocument xmldetails = XDocument.Load(bookfile);
XElement books =
    new XElement("person",
    new XAttribute("id", "5"),
    new XAttribute("name", "Book Title"),
    new XAttribute("beneficiary", "Book Author"),
    new XAttribute("description", "Book Author"),
    new XAttribute("deadline", "Book Author"),
    new XAttribute("price", "Fiction"));
xmldetails.Root.Add(books);

xmldetails.Save(bookfile);
bookfile.Close();

これはPeople.xmlです:

<?xml version="1.0" encoding="utf-8" ?>
<people>
    <person index="1" name="Zlecenie numer jeden" beneficiary="Kowalski" description="Proste zlecenie jakiejs strony czy cos" price="800" deadline="27.12.2013" />
</people>

ボタンをクリックすると、次のエラーが発生します。

ルートレベルのデータは無効です。行1、位置1。

4

2 に答える 2

1

XML ファイルにルート ノードがない可能性があり、子ノードを存在しない親に追加しようとしています。ソース XML が整形式であることを確認してください。

ところで、コードですべきことは次のとおりです。

XElement books =
            new XElement("person",
            new XAttribute("id", "5"),
            new XAttribute("name", "Book Title"),
            new XAttribute("beneficiary", "Book Author"),
            new XAttribute("description", "Book Author"),
            new XAttribute("deadline", "Book Author"),
            new XAttribute("price", "Fiction"));
xmldetails.Element("People").Add(books);
于 2013-01-10T19:27:39.913 に答える
1

そのはず

xmldetails.Root.Add(books);

peoplexml のルートなので、指定する必要はありません。

Rootプロパティを使用する必要があります。

于 2013-01-12T18:31:56.350 に答える