人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

創(chuàng)建可編輯的xml文檔(之二) 過(guò)濾xml 數(shù)據(jù)

創(chuàng)建可編輯的xml文檔(之二) 過(guò)濾xml 數(shù)據(jù)

更新時(shí)間:2022-10-15 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

過(guò)濾xml 數(shù)據(jù):

讓我們?cè)诩僭O(shè)一下,如果在一個(gè)真實(shí)的聯(lián)系應(yīng)用程序中,用戶可能不希望在分級(jí)的treeview中看到“email”,”city ” 或者“country”,他們可能更希望看到頂級(jí)的用戶聯(lián)系身份內(nèi)容,例如Alex, Rebekah, 或者 Justin,既然這樣聯(lián)系點(diǎn)的相應(yīng)的詳細(xì)信息(email,city )就處于相鄰的可以編輯的區(qū)域,類似的用戶也可能希望通過(guò)上下拖拉樹節(jié)點(diǎn)來(lái)重新排列他們,然而在個(gè)體聯(lián)系點(diǎn)內(nèi)部通過(guò)treeview控件移動(dòng) email 地址或者city 是沒(méi)有意義的。人們通常希望用一個(gè)分等級(jí)的視圖去組織數(shù)據(jù),而不簡(jiǎn)單的是對(duì)他們進(jìn)行分類,換句話對(duì)聯(lián)系(contact)進(jìn)行重新排序分組是很正常的要求,除非city 和country 元素與指定聯(lián)系的關(guān)聯(lián)是很清晰,而且你可能希望單獨(dú)的處理他們,而不是把他們進(jìn)行分組分對(duì)。

一個(gè)很好的解決方案是當(dāng)顯示聯(lián)系樹時(shí)隱藏子節(jié)點(diǎn),例如你可以為email. Address等不想顯示的子元素添加一個(gè)特殊的屬性(例如view=”hide”),這樣在組裝樹控件時(shí)在組裝方法中設(shè)置這個(gè)特殊屬性,從而可以忽略任何元素(包括他們的子節(jié)點(diǎn)),雖然這樣可以工作,但是改變數(shù)據(jù)源來(lái)適合用戶顯示不是一個(gè)很可靠的設(shè)計(jì)思路

一個(gè)更好的思路是在給定的文檔內(nèi)部為數(shù)據(jù)客戶定義分級(jí)視圖是否可見的結(jié)構(gòu),你可以通過(guò)修改populateTreeControl() 方法以使它支持xpath 例如:



[C#]
private void populateTreeControl(System.Xml.XmlNode document,
System.Windows.Forms.TreeNodeCollection nodes)
{
foreach (System.Xml.XmlNode node in
document.ChildNodes)
{
System.Xml.XmlNode expr =
node.SelectSingleNode(xpath_filter);

if (expr != null)
{
TreeNode new_child = new
TreeNode(expr.Value);
nodes.Add(new_child);
populateTreeControl(node, new_child.Nodes);
}
}
}



[VB]
Private Sub populateTreeControl( _
ByVal document As System.Xml.XmlNode, _
ByVal nodes As
System.Windows.Forms.TreeNodeCollection)

Dim node As System.Xml.XmlNode
For Each node In document.ChildNodes
Dim expr As System.Xml.XmlNode = _
node.SelectSingleNode(xpath_filter)

If Not (expr Is Nothing) Then
Dim new_child As New TreeNode(expr.Value)
nodes.Add(new_child)
populateTreeControl(node, new_child.Nodes)
End If
Next
End Sub
在類級(jí)別范圍上添加下面的行:



[C#]
private string xpath_filter =
"@id[parent::contacts or parent::contact]";



[VB]
Private xpath_filter As String = _
"@id[parent::contacts or parent::contact]"


你可以使用xpath查詢返回的結(jié)果來(lái)決定是否遞歸調(diào)用裝入子節(jié)點(diǎn),這個(gè)查詢建立了一個(gè)包含規(guī)則,讀“Select the id attribute of any 'contacts' or 'contact' element.",同樣你也可以使用一個(gè)排除規(guī)則去確定你需要拒絕哪一個(gè)數(shù)據(jù)。

attribute::id[not(parent::email or
parent::city or parent::country)]
這不是一個(gè)通用的解決方案,但是像這樣基于父子關(guān)系的過(guò)濾比基于沒(méi)有限制的節(jié)點(diǎn)或者屬性要好很多,當(dāng)用戶擁有充足的可編輯權(quán)限而不妨礙它的層次時(shí),這是一個(gè)表達(dá)一個(gè)xml文檔基本結(jié)構(gòu)的很有效的方法。既然這樣一個(gè)簡(jiǎn)單的查詢就已經(jīng)足夠了 ,除非你需要進(jìn)行更復(fù)雜的操作

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 商洛市| 万山特区| 军事| 长武县| 柳江县| 庆城县| 金塔县| 延寿县| 呼玛县| 新源县| 房产| 永宁县| 浪卡子县| 太谷县| 遵义市| 郓城县| 汽车| 新余市| 扬中市| 西吉县| 盐城市| 彭山县| 延长县| 衢州市| 建平县| 安化县| 察隅县| 吴忠市| 甘泉县| 聂拉木县| 万山特区| 易门县| 察隅县| 怀化市| 仁寿县| 芦溪县| 新和县| 常宁市| 彭泽县| 江北区| 雅安市|