2012-11-28 4 views
5

XMLELEMENT을 기반으로하지만 그들은XML 노드가 나는 두 가지 방법을 시도

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); 

이 뭔가 두 번째 방법 :: 모두 didnt 한 일 .. 첫 번째 방법 :: 편집이 잘못된 내가보고 해달라고 ... 내 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> 

처럼 보인다 그리고 난 쿼리 STR를 사용 "QueryString"을 사용하여 다른 페이지에있는 gridView에서 값을로드하는 중 ....

감사합니다.

답변

1

쉽게 LINQ to 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

내가 아이디 XMLELEMENT 값을 기준으로 내 코드를 필터링 할 ,, 그러나 그것은 작동하지 않는 것! XmlDocument xdoc = new XmlDocument(); xdoc.Load (filepath); XmlNode root = xdoc.DocumentElement; XmlNode idNode = root.SelectSingleNode ("/ students/student/id"); if (idNode.Value == null) {새 xml 노드 만들기} else if (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 –

관련 문제