簡體   English   中英

如何編寫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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM