2013-05-22 3 views
0

Я столкнулся с проблемой сохранения данных из класса Adobe Flash AS3 в XML-файл. Проблема в том, что я теряю некоторые скобки (<>) при сохранении. Файл заканчивается так:Loosing brackets при сохранении AS3 в XML

<UserData> 
    <User> 
    John 
    18 
    100 
    </User> 
    <User> 
    Olav 
    16 
    10 
    </User> 
</UseData> 

Вместо этого (это то, как это должно быть):

<UserData> 
    <User> 
    <Name>John</Name> 
    <Age>18</Age> 
    <Balance>100</Balance> 
    </User> 
    <User> 
    <Name>Olav</Name> 
    <Age>16</Age> 
    <Balance>10</Balance> 
    </User> 
</UserData> 

В моей программе у меня есть два класса, где вторичный класс содержит информацию о каждом пользователя (имя, возраст и баланс). Основной класс содержит массив, который содержит всех пользователей.

Функция, которая сохраняет данные:

function saveData(e:Event):void 
{ 
    var fileRef:FileReference=new FileReference() 
    var userData:XML=new XML(<UserData/>) 
    for(var i:int=0;i<userArr.length;i++) //userArr is the array holding all the users 
    { 
     var user:XML=new XML(<User/>) 
     var name:XML=new XML(<Name/>) 
     var age:XML=new XML(<Age/>) 
     var balance:XML=new XML(<Balance/>) 
     name=XML(userArr[i].name) //the userArr holds a class with the variables name, age and balance. 
     age=XML(userArr[i].age) 
     balance=XML(userArr[i].balance) 

     //I'm pretty sure that its here it goes wrong. 
     //fore some reason when I appendChild the user, it gets <> but when I 
     //appendChild name, age and balance it does not get a <>. 
     user.appendChild(name) 
     user.appendChild(age) 
     user.appendChild(balance) 

     userData.appendChild(user) 

    } 
    fileRef.save(userData,"Data.xml") 
} 

Самое странное в том, что это используется для работы (я думаю). Я использовал его несколько месяцев назад (в cs4), и это сработало. Но теперь он больше не работает (в cs6).

Nb: Я перевел свой код с норвежского на английский. Поэтому, если я случайно что-то ошибся, это, вероятно, не в коде.

спасибо.

ответ

0

Вы переставляете стоимость имени/возраста/баланса вместо того, чтобы вставлять данные внутри. таким образом вы удаляете исходное значение. Вы должны были использовать appendChild вместо =.

function saveData(e:Event):void 
{ 
    var fileRef:FileReference=new FileReference() 
    var userData:XML=new XML(<UserData/>) 
    for(var i:int=0;i<userArr.length;i++) //userArr is the array holding all the users 
    { 
     var user:XML=new XML(<User/>) 
     var name:XML=new XML(<Name/>) 
     var age:XML=new XML(<Age/>) 
     var balance:XML=new XML(<Balance/>) 
     name.appendChild(userArr[i].name) //the userArr holds a class with the variables name, age and balance. 
     age.appendChild(userArr[i].age) 
     balance.appendChild(userArr[i].balance) 

     //I'm pretty sure that its here it goes wrong. 
     //fore some reason when I appendChild the user, it gets <> but when I 
     //appendChild name, age and balance it does not get a <>. 
     user.appendChild(name) 
     user.appendChild(age) 
     user.appendChild(balance) 

     userData.appendChild(user) 

    } 
    fileRef.save(userData,"Data.xml") 
} 
+0

Это имеет большой смысл! Спасибо! – Kartoffel

Смежные вопросы