![](/img/trans.png)
[英]How can I add ISortedEnumerable<XElement> to XElement?
[英]How can I write Xelement values?
我想創建一個從xml文件收集自定義childnode值並從表單重寫白名單數據的方法。 我有一個主意,就是將數據收集在ArrayList中並將其提供給方法。 但是我無法在foreach中更改它,因為它拋出ArgumentOutOfRangeException(盡管ArraList包含8個元素,而增量變量的值也為8)。 所以我會尋求幫助。
這是代碼:
public static void Search(ArrayList nodeIds, ArrayList values)
{
XDocument doc = XDocument.Load("Options.xml");
int i = 0;
foreach (XElement option in doc.Descendants("BasicOptions"))
{
foreach(string nodeId in nodeIds)
{
if (option.Attribute("id").Value == nodeId)
{
foreach (XElement prop in option.Nodes())
{
prop.Value = values[i].ToString();
i++;
}
}
}
}
doc.Save("Options.xml");
}
在我看來,那i
會出去的范圍,而不問題,因為它被聲明外部到3個 foreach
語句和中心內使用foreach
。 您應該重新考慮您的方法。
我建議,但不知道您的傳入值或為什么要調用它,將內部foreach
聲明為for
語句,如下所示:
public static void Search(ArrayList nodeIds, ArrayList values)
{
XDocument doc = XDocument.Load("Options.xml");
foreach (XElement option in doc.Descendants("BasicOptions"))
{
foreach (string nodeId in nodeIds)
{
if (option.Attribute("id").Value == nodeId)
{
var nodes = option.Nodes().ToList();
for (int i = 0; i < nodes.Count && i < values.Count; i++)
{
XElement node = (XElement)nodes[i];
node.Value = values[i].ToString();
}
}
}
}
doc.Save("Options.xml");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.