讀取xml到listbox/combobox
1,知識需求:
(1)訪問xml檔案的兩個基本模型:
一,dom模型;使用dom的好處在於它允許編輯和更新xml文件,可以隨機訪問文件中的資料,可以使用xpath查詢,但是,dom的缺點在於它需要一次性的載入整個文件到記憶體中,對於大型的文件,這會造成資源問題。
二,流模型;流模型很好的解決了這個問題,因為它對xml檔案的訪問採用的是流的概念,也就是說,任何時候在記憶體中只有當前節點,但它也有它的不足,它是唯讀的,僅向前的,不能在文件中執行向後導航操作。雖然是各有千秋,但我們也可以在程式中兩者並用實現優劣互補。c#採用流模型。
(2)xmlreader類
represents a reader that provides fast, non
-cached, forward
-only access to xml data.
該類中有三個重要的衍生類:xmltextreader;xmltextvalidatingreader;xmlnodereader(3
)xmlnodetype列舉
該列舉裡面有很多實用的數。
2,案例(vs2008
xmlreader 資源釋放方法
public
void
dispose()
protected
virtual
void
dispose(
bool
disposing)if(
this
.xtr
!=null)if
(this
.xmlpath
!=null)}
#endregion
#region
xmlreader 的屬性
public
listbox listbox
set}
public
combobox combobox
set}
public
string
xmlpath
set}
#endregion
#region
遍歷xml檔案
public
void
eachxmltolistbox()
}catch
(xmlexception xe)
finally}}
public
void
eachxmltocombobox()
}catch
(xmlexception xe)
finally}}
#endregion
#region
讀取xml檔案
public
void
readxml()
?>
",xtr.name,xtr.value));
//name為節點名;value為節點內容
}else
if(xtr.nodetype
==xmlnodetype.element)
//element元素(例如,)
",xtr.name);
if(xtr.hasattributes)
//if the current node has attributes,return true
=''''''''
", xtr.name, xtr.value);}}
attandele
=attandele.trim() +"
>";
listbox.items.add(attandele);
}else
if(xtr.nodetype
==xmlnodetype.endelement)
//an end element tag (for example, ).
else
if(xtr.nodetype
==xmlnodetype.text)
//the text content of a node. }}
catch
(xmlexception xmlexp)
finally
}#endregion
#region
讀取xml所有文字節點值
public
void
readxmltexttolistbox()}}
catch
(xmlexception xe)
finally
}#endregion}}
C 讀取xml檔案
2.將tinyxml檔案目錄下的tinystr.h tinystr.cpp tinyxml.h tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp等放入工程目錄下 3.使用的xml範例如下 book store book1 book2 4.讀取 如下 a 申...
C 讀取XML檔案
xml結構如下 c users desktop 機台資料 eventdata.txt sa5r22eb 27b4 48d7 9de9 c9df6ddf61af 1c users desktop 機台資料 eventdata.txt urh672eb 27b4 48d7 9de9 c9df6ddf61...
c 遞迴讀取xml
1載入xml 獲取路徑 string xmlpath path.combine textbox 選擇xml檔案.text 建立物件 xmldocument doc new xmldocument 載入xml doc.load xmlpath 得到頂層節點列表 xmlnodelist toplist ...