2014-11-21 7 views
0

나는이 test.xml의 같은 ​​XML 파일이 있습니다업데이트 XML 파일

<?xml version="1.0" encoding="utf-8" ?> 
<Message> 
<Item Name ="msg1" Status ="false"/> 
<Item Name="msg2" Status="false"/> 
</Message> 


     System.Xml.XmlTextReader textReader = new System.Xml.XmlTextReader(test.xml); 
     System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument(); 
     xdoc.Load(test.xml); 
     var testreader = xdoc.DocumentElement.ChildNodes; 
     string name = string.Empty; 
     string value = string.Empty; 


     if (message.MsgType == 10005) 
     { 
      value = "true"; 
     } 
     else if (message.MsgType == 10002) 
     { 
      value = "false"; 
     } 

     foreach (var mychild in testreader) 
     { 
      var childatt = ((System.Xml.XmlElement)mychild); 
      name = childatt.Attributes["Name"].Value; 
      value = childatt.Attributes["Status"].Value; 
      } 

나는 다음과 같은 일을해야 할 것 :

  1. 내가 XML에서 업데이트 된 값을 저장해야 xmltestReader 및 xmldocument 파일
  2. messageID에 대한 제 3의 클라이언트로부터 요청을 받고 있으므로 xml 파일에 존재하는지 확인해야합니다 (예 : msg1에 대한 요청을 받아 xml 파일과 일치시켜야합니다).

희망 나는 내 질문에 분명하다.

+0

1 'XmlDocument' XML 파일에 다시 데이터를 저장할 수있는'Save' 수단을 갖는다 2. 당신이 원하는 것에 대해 분명하지는 않습니다. 단지 문자열 비교 일뿐입니다, 그렇죠? – kennyzx

답변

0

//Get Message 
 

 
//txtsearch text u have to pass message Id 
 

 
      var xmlFilePath = Server.MapPath("Test.xml"); 
 
      XmlDocument xmlDoc = new XmlDocument(); 
 
      xmlDoc.Load(xmlFilePath); 
 
     
 
      XmlNodeList nodeList = xmlDoc.DocumentElement.SelectNodes("/TableMessage/Message"); 
 
      string msgID = "",msgname=""; 
 
      foreach (XmlNode node in nodeList) 
 
      { 
 
       if (node.SelectSingleNode("Message_Details").InnerText == "True" && node.SelectSingleNode("Message_id").InnerText==txtsearchtext.Text) 
 
       { 
 
        msgID = node.SelectSingleNode("Message_id").InnerText; 
 
        msgname = node.SelectSingleNode("Message_name").InnerText; 
 
        
 
       } 
 
       
 
           
 
       
 
      } 
 

 
//store Updated Xml in ur project xml 
 
//get the information from end user and pass the value to correspoding fields 
 

 

 
      XmlDocument xmlEmloyeeDoc = new XmlDocument(); 
 
      xmlEmloyeeDoc.Load(Server.MapPath("~/Test.xml")); 
 
      XmlElement ParentElement = xmlEmloyeeDoc.CreateElement("Message"); 
 
      XmlElement ID = xmlEmloyeeDoc.CreateElement("Message_id"); 
 
      ID.InnerText = "6"; 
 
      XmlElement message = xmlEmloyeeDoc.CreateElement("Message_name"); 
 
      message.InnerText = "Message6"; 
 
      XmlElement Details = xmlEmloyeeDoc.CreateElement("Message_Details"); 
 
      Details.InnerText = "True"; 
 
      ParentElement.AppendChild(ID); 
 
      ParentElement.AppendChild(message); 
 
      ParentElement.AppendChild(Details);  
 
      xmlEmloyeeDoc.DocumentElement.AppendChild(ParentElement); 
 
      xmlEmloyeeDoc.Save(Server.MapPath("~/Test.xml")); 
 

 

 
I hope that code will help u
you will customize ur xml file like this 
 

 
<?xml version="1.0" encoding="utf-8"?> 
 
<TableMessage> 
 
    <Message> 
 
    <Message_id>Message1</Message_id> 
 
    <Message_name>Message1</Message_name> 
 
    <Message_Details>True</Message_Details> 
 
    </Message> 
 
    <Message> 
 
    <Message_id>Message2</Message_id> 
 
    <Message_name>Message2</Message_name> 
 
    <Message_Details>True</Message_Details> 
 
    </Message> 
 
    <Message> 
 
    <Message_id>Message3</Message_id> 
 
    <Message_name>Message3</Message_name> 
 
    <Message_Details>False</Message_Details> 
 
    </Message> 
 
</TableMessage>