2012-11-28 61 views
5

我已經嘗試了兩種方式,但他們都沒有工作.. 第一種方式::XML節點編輯基於一個XMLELEMENT

string filepath = Server.MapPath[this is not a link]("XMLFile2.xml"); 
XmlDocument xdoc = new XmlDocument(); 
       xdoc.Load(filepath); 

       XmlNode root = xdoc.DocumentElement; 
       XmlNode idNode = root.SelectSingleNode("/students/student/id"); 
if (idNode.Value == 9.ToString()) 
        { 
         var nodeOfStudent = xdoc.SelectNodes("/students/student[@id='9']"); 
         nodeOfStudent[1].InnerXml = TextBox_firstname.Text; 
         nodeOfStudent[2].InnerXml = TextBox_lastname.Text; 
         nodeOfStudent[3].InnerXml = TextBox_dob.Text; 
         nodeOfStudent[4].InnerXml = TextBox_class.Text; 
         nodeOfStudent[5].InnerXml = TextBox_section.Text; 
         nodeOfStudent[6].InnerXml = TextBox_telephone.Text; 

        } 

第二種方式::

string filepath = Server.MapPath("XMLFile2.xml"); 
       XmlDocument xdoc = new XmlDocument(); 
       xdoc.Load(filepath); 

       XmlNode root = xdoc.DocumentElement; 
       XmlNode idNode = root.SelectSingleNode("/students/student/id"); 

xdoc.SelectSingleNode("/students/student[@id='10']/firstname").InnerXml = TextBox_firstname.Text; 
         xdoc.DocumentElement.AppendChild(firstname); 
         xdoc.SelectSingleNode("/students/student[@id='10']/lastname").InnerXml = TextBox_firstname.Text; 
         xdoc.SelectSingleNode("/students/student[@id='10']/dob").InnerXml = TextBox_firstname.Text; 
         xdoc.SelectSingleNode("/students/student[@id='10']/class").InnerXml = TextBox_firstname.Text; 
         xdoc.SelectSingleNode("/students/student[@id='10']/section").InnerXml = TextBox_firstname.Text; 
         xdoc.SelectSingleNode("/students/student[@id='10']/telephone").InnerXml = TextBox_firstname.Text; 

         xdoc.Save(filepath); 

是有什麼錯了,我沒有看到... 我的XML文件看起來像這樣::

<students> 
    <student> 
    <id>1</id> 
    <first_name>ahmad</first_name> 
    <last_name>hani</last_name> 
    <DOB>12/5/1998</DOB> 
    <class>sixth</class> 
    <section>A</section> 
    <telephone>06555632</telephone> 
    </student> 
</students> 

和我使用的查詢海峽使用「查詢字符串」來加載位於另一個頁面中的gridView的值....

在此先感謝。

回答

1

您可以輕鬆地使用LINQ這樣對XML:

int id = 9; 
XDocument xdoc = XDocument.Load(filepath); 
var student = xdoc.Descendants("student") 
        .Where(s => (int)s.Element("id") == id) 
        .SingleOrDefault(); 

if (student != null) 
{ 
    student.Element("first_name").Value = TextBox_firstname.Text; 
    student.Element("last_name").Value = TextBox_lastname.Text; 
    student.Element("DOB").Value = TextBox_dob.Text; 
    student.Element("class").Value = TextBox_class.Text; 
    // etc 
} 

xdoc.Save(filepath); 
+0

我想基於ID XMLELEMENT值篩選我的代碼,,但它似乎並沒有工作! XmlDocument xdoc = new XmlDocument(); xdoc.Load(filepath); XmlNode root = xdoc.DocumentElement; XmlNode idNode = root.SelectSingleNode(「/ students/student/id」); 如果(idNode.Value == NULL){創建一個新的XML節點} 否則,如果(idNode.Value!= NULL){創建id的值一個新的XML元素) 我試圖解釋它的問題,這裏是鏈接... http://stackoverflow.com/questions/13607387/edit-xml-elements-of-a-specific-node-based-on-its-id-element-asp-net-page –