2012-11-02 4 views
4

일부 값을 XML 파일에 저장하려고합니다. 이미 XML 파일을 만들고 데이터를 덮어 쓰려고합니다. 이 코드는 ..Asp-C를 사용하여 Xml 파일에 쓰기 #

<?xml version="1.0" encoding="utf-8"?> 
<ROOT> 
    <UserName>abc</UserName> 
    <PassWord>123</PassWord> 
</ROOT> 

..

NewPassword nps = new NewPassword(); 
nps.username = TxtUser.Text; 
nps.Password = TxtNewPassword.Text; 
StorePassword sp=new StorePassword(); 
sp.store(nps); 

기존 XML 파일에는 다음이 포함 .. 버튼 클릭에

/*storepassword.cs *// 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 

public class StorePassword 
{ 
    public StorePassword() 
    { 
    } 
    public void store(NewPassword nps) 
    { 
     XmlDocument XmlDoc = new XmlDocument(); 

     //XmlDoc.Load(@"Password.xml"); 
     XmlDoc.LoadXml("Password.xml"); 

     XmlNode root = XmlDoc.DocumentElement; 
     XmlNode myNode1 = root.SelectSingleNode("UserName"); 
     XmlNode myNode2 = root.SelectSingleNode("PassWord"); 
     myNode1.Value = "sjn"; 
     myNode2.Value = "sjn123"; 
     XmlDoc.Save(@"Password.xml"); 
    } 
} 

//NewPassword.cs 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

public class NewPassword 
{ 

    public NewPassword() 
    { 

    } 
    public string username{ get; set; } 
    public string Password{ get; set; } 
} 

.. 주어진다 그러나 그것은 작동하지 않습니다

루트 수준의 데이터가 잘못되었습니다. 1 호선, 위치는 1

이 오류가 occures ..

Ichanged는 XmlDoc.Load(@"Password.xml");

같은 코드는 이제 오류가

Root element is missing. 

    Description: An unhandled exception occurred during the execution of the current web     request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Xml.XmlException: Root element is missing. 

이런 일이 발생하는 이유

로 변경?

+1

LoadXml은 텍스트로 표시된 XML 문서를로드하기위한 것입니다. 대신로드 (주석 줄에서) –

+0

k .. 시도해 보겠습니다. – Sudix

+0

루트 요소가 없습니다 이 오류가 발생했습니다 – Sudix

답변

0

Xml을로드 할 때 Server.MapPath를 사용해야합니다. XmlDoc.LoadXml(Server.MapPath("Password.xml"));

1

XML 직렬화를 사용해보십시오 :

public static partial class ObjectXMLSerializer<T> where T : class 
{ 
      private static void SaveToDocumentFormat(T serializableObject, System.Type[] extraTypes, string path, IsolatedStorageFile isolatedStorageFolder) 
      { 
       using (TextWriter textWriter = CreateTextWriter(isolatedStorageFolder, path)) 
       { 
        XmlSerializer xmlSerializer = CreateXmlSerializer(extraTypes); 

        //Cuong: set name space to null 
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); 
        ns.Add("", ""); 
        xmlSerializer.Serialize(textWriter, serializableObject, ns); 
       } 
      } 
      public static void Save(T serializableObject, string path) 
      { 
        SaveToDocumentFormat(serializableObject, null, path, null); 
      } 

} 
0

가 작동 이유를 모르겠어요

<?xml version="1.0" encoding="utf-8"?> 

<?xml version="1.0" encoding="utf-8"?> 
<ROOT> 
    <UserName>abc</UserName> 
    <PassWord>123</PassWord> 
</ROOT> 

에서 삭제하지만 우리는 우리의 코드에있는 모든 시간을 그렇게 . 그리고 네가 사용해야합니다 XmlDocument.Load가 아닌 XmlDocument.LoadXml