<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <log4net>
     <logger name="LogOperationADO" lockItem="false">
       <level value="DEBUG" lockItem="false"/>
       <appender-ref ref="LogOperationAdoNetAppender" />
    </logger>
  </log4net>
</configuration>讀取這個,本來衹是讀取最深一層<level value="DEBUG" lockItem="false"/> 裡面有 lockItem="false"的節點的屬性
所以之前是這樣寫的:foreach (XmlNode no in noSel.ChildNodes)
{
  foreach (XmlNode no2 in no.ChildNodes)              //modify start
                        {
                            object[] paras;
                            isNewRow = false;                            if (no2.Attributes == null)  //屬性=空
                            {
                                if (no2.Value != null)   //值不為空
                                {
                                    strDescription = no2.Value; //得到值
                                }
                                continue;
                            }
                            attLen = no2.Attributes.Count + FIXCOLNUM;
                            paras = new object[attLen];                            if (!string.IsNullOrEmpty(strDescription))
                            {
                                paras[0] = strDescription;          //節點內容放入到數組中
                            }                            for (int i = FIXCOLNUM; i < no2.Attributes.Count + FIXCOLNUM; i++)
                            {
                                XmlAttribute att = no2.Attributes[i - FIXCOLNUM]; //屬性?                                if (!dataGridView1.Columns.Contains(att.Name))
                                {
                                    dataGridView1.Columns.Add(att.Name, att.Name);
                                    if (att.Name.Equals("lockItem"))
                                    {
                                        dataGridView1.Columns[att.Name].Visible = false; //存在lockItem的內容設為不可見                                    }                                    if (att.Name.Equals("type") || att.Name.Equals("ref") || att.Name.Equals("name"))  //modify
                                    {
                                        dataGridView1.Columns[att.Name].Visible = false;
                                    }                                }
                                if (att.Name.Equals("lockItem") && att.Value != null && att.Value.Equals("false", StringComparison.OrdinalIgnoreCase))
                                {
                                    isNewRow = true;
                                }
                                paras[i] = att.Value;
                            }                            if (isNewRow)                        //如lockItem不為空,且值為FALSE 則加到datagridview
                            {
                                dataGridView1.Rows.Add(paras);
                                dataGridView1.Rows[dataGridView1.Rows.Count - 1].Tag = no2;
                            }
                            strDescription = string.Empty;
                        }
}
但現在要連上一節點 <logger name="LogOperationADO" lockItem="false"> 含有lockItem="false" 的節點屬性也一起讀取出來
PS:是在datagridview 上顯示出來。
應該怎麼做呢?

解决方案 »

  1.   

    我現在能把他們一起取出來,但取出來後,在列上的顯示就不對了,
    像上面
    <logger name="LogOperationADO" lockItem="false">
           <level value="DEBUG" lockItem="false"/>屬性值:"LogOperationADO" ,"DEBUG"一同放到列名為 name 的上面,
    就是達不到 name 顯示 LogOperationADO ,value列 顯示 DEBUG
    -----------------------------
    name          value
    LogOperationADO
                DEBUG
    ------------------------------
    現在是這樣
    -----------------------------
    name                 value
    LogOperationADO
    DEBUG
    ------------------------------
    這樣應該怎麼解決呢?