【问题标题】:Update xml file with xmltextReader in c#在 C# 中使用 xmltextReader 更新 xml 文件
【发布时间】:2014-11-21 15:49:30
【问题描述】:

我有像 test.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. 我必须使用 xmltestReader 和 xmldocument 将更新后的值保存在 xml 文件中
  2. 我收到来自第三个客户端的关于 messageID 的请求,因此我必须检查它是否存在于 xml 文件中(例如,获取 msg1 的请求,因此我必须匹配它是否存在的 xml 文件)。

希望我的问题很清楚。

【问题讨论】:

  • 1. XmlDocument 有一个 Save 方法,可以将数据保存回 xml 文件; 2.不清楚自己要什么,只是字符串比较,不是吗?

标签: c# xml xmltextreader


【解决方案1】:

//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> 

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多