0
目前我正在使用xpath與linq to xml在xml文檔中的特定元素之後添加元素。 我的擔心是如果這個層次太深,我不得不一直提到完整層次? 我不能直接以某種方式給出元素的名稱,之後我想添加我的新元素。更簡單的方法來使用LINQ在XML中添加元素
在這段代碼我談論這個層次: SESSIONANALYSER/AP /模式/ NI/STATEINFORMATION/INIT/INPUT [@ VALUE = 'SLN7DEACTIVATION'] /法
String strFile = File.ReadAllText(Server.MapPath("~/SessionAnalyserAccessories.xml"));
XDocument xdoc1 = XDocument.Parse(strFile);
xdoc1.XPathSelectElement("SESSIONANALYSER/AP/MODES/NI/STATEINFORMATION/INIT/INPUT[@VALUE='SLN7DEACTIVATION']/METHOD").AddAfterSelf(new XElement("METHOD", "", new XAttribute("NAME", "CHECKSUBSCRIBERBALANCE1"), new XAttribute("PARAMETERS", "SLN7"), new XAttribute("POSSIBLEACTIONS1", "FALLOUTON_FAILUREREGION_SETPSOFAILED_FALSE1"), new XAttribute("MAINTAINSESSION", "NO"), new XAttribute("RESPONSE", "-4"), new XAttribute("NEXTLEVEL", "")));
太棒了!我現在使用這個代碼,我在這裏有一個疑問。此代碼找到一個匹配元素,然後插入新元素,如果要在所有匹配元素之後添加元素,該代碼在第一次匹配後停止。 xAttribute(「METHOD」,「」,new XAttribute(「NAME」,Parameters [0]),new XAttribute(「PARAMETERS」,Parameters新的XAttribute(「RESPONSE」,Parameters [4]),新的XAttribute(「POSSIBLEACTIONS1」,「Parameters [2]」),新的XAttribute(「MAINTAINSESSION」,參數[3] NEXTLEVEL「,Parameters [5])));' – Charu
那麼如果您希望找到多個元素,則可以使用XPathSelectElements,並在返回的節點上使用foreach循環。另外,既然你既要查找也要插入'METHOD'元素,你需要首先調用ToList,例如(foreach)(XElement method in xdoc1.XPathSelectElements(「// INPUT [@ VALUE ='SLN7DEACTIVATION'/ METHOD」)。ToList()){method.AddAfterSelf(...); }'。 –