2017-07-26 86 views
0

我想用xml编辑模式更新我的网格,但我无法做到。如何编辑C编辑模式下的XML文件#

我能编辑只有一个元素,但不知道如何编辑多个

我的XML文件看起来像下面

<CATALOG> 
    <CD> 
    <ID>1</ID> 
    <Application>Dot Net</Application> 
    <status>Available</status> 
    <LastUpdate>02-07-2017</LastUpdate> 
    <Comments>The Rox for July has been loaded</Comments> 
    </CD> 
    <CD> 
    <ID>2</ID> 
    <Application>JFORWBK</Application> 
    <status>Available</status> 
    <LastUpdate>05-07-2017</LastUpdate> 
    <Comments>DeLorean data has been loaded</Comments> 
    </CD> 
    <CD> 
    <ID>3</ID> 
    <Application>Codepress</Application> 
    <status>Open for Input</status> 
    <LastUpdate>06-07-2017</LastUpdate> 
    <Comments>The Rox for July has been loaded</Comments> 
    </CD> 
</catalog> 

当我在编辑模式基础网格打开数据我比我能够更新单个元素

如何在一次更新所有元素,如果我在隐藏字段中的值。

我能够在id.I的基础上更新我的XML元素是唯一能够在1次更新一个元素..

代码如下:

ID = Request.QueryString["sID"]; 
        XmlDocument xmlDoc = new XmlDocument(); 
        string filepathsUpdate = Server.MapPath("Action.xml"); 
        xmlDoc.Load(filepathsUpdate); 
        XmlNode node = xmlDoc.SelectSingleNode("/CATALOG/CD[ID=" + ID + "]/Action"); 
        node.InnerText = ssplit[0]; 
        xmlDoc.Save(filepathsUpdate); 

现在是怎么做的更新,并在编辑模式中点击服务器端C#中的更新按钮。

回答

0

您可以使用XmlNodeList并对该列表中的每个XmlNode进行迭代并执行更新。

如果没记错的它应该是沿

foreach(XmlNode node in XmlDoc.selectNodes("nodename")){node.innerText = "updated value here";} 
0

行你为什么不使用一个循环接一个像更新它们之一。

将所有隐藏的字段值放入Ids列表中。然后使用循环更新XML。

List<int> Ids = new List<int>(); 
Ids.Add(1); 

for (int i = 0; i < Ids.Count; i++) 
{ 
    ID = Request.QueryString["sID"]; 
    XmlDocument xmlDoc = new XmlDocument(); 
    string filepathsUpdate = Server.MapPath("Action.xml"); 
    xmlDoc.Load(filepathsUpdate); 
    XmlNode node = xmlDoc.SelectSingleNode("/CATALOG/CD[ID=" + Ids[i].ToString() + "]/Action"); 
    node.InnerText = ssplit[0]; 
    xmlDoc.Save(filepathsUpdate); 
} 
1

LINQ to XML中这是非常简单的:

var id = Request.QueryString["sID"]; 
XDocument doc = XDocument.Load("Action.xml"); 
var catalogDescendants = doc.Descendants("CATALOG"); 
foreach (var cd in catalogDescendants) 
{ 
    //you can update the id here for whatever you want 
    cd.Element("ID").Value = id; 
}