<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      創建可編輯的xml文檔(之4) 刪除、改名、插入設置

      [摘要]執行刪除、改名、插入操作 實現了拖放操作就已經完了最難的部分,但是出于完整性考慮,還應該提供一些更好的基本的編輯功能。下面僅僅用四行代碼就可以實現刪除操作:[C#] string xpath_query = buildXPathQuery(this.SelectedNode);...
      執行刪除、改名、插入操作
      實現了拖放操作就已經完了最難的部分,但是出于完整性考慮,還應該提供一些更好的基本的編輯功能。下面僅僅用四行代碼就可以實現刪除操作:
      [C#]
      string xpath_query =
      buildXPathQuery(this.SelectedNode);
      System.Xml.XmlNode node =
      xml_document.DocumentElement.SelectSingleNode(
      xpath_query);
      node.ParentNode.RemoveChild(node);
      SelectedNode.Remove();



      [VB]
      Dim xpath_query As String = _
      buildXPathQuery(Me.SelectedNode)
      Dim node As System.Xml.XmlNode = _
      xml_document.DocumentElement.SelectSingleNode( _
      xpath_query)
      node.ParentNode.RemoveChild(node)
      SelectedNode.Remove()
      重命名操作需要更多的一些考慮,你可以調用buildXPathQuery 去查找那個文件夾正在被編輯,還有如何確定是哪一個屬性,如何確定被顯示名稱相應的返回結構的元素或者子元素?這是一個誤導的問題,XPath filte函數已經被定義了,你只需應用現面的轉換就可以了:
      [C#]
      private void XmlTreeView_AfterLabelEdit(object sender,
      System.Windows.Forms.NodeLabelEditEventArgs e)
      {
      string xpath_query = buildXPathQuery(e.Node);
      System.Xml.XmlNode node =
      xml_document.DocumentElement.SelectSingleNode(
      xpath_query);
      System.Xml.XmlNode label =
      node.SelectSingleNode(xpath_filter);
      label.Value = e.Label;
      }



      [VB]
      Private Sub XmlTreeView_AfterLabelEdit( _
      ByVal sender As Object, _
      ByVal e As
      System.Windows.Forms.NodeLabelEditEventArgs) _
      Handles MyBase.AfterLabelEdit

      Dim xpath_query As String = buildXPathQuery(e.Node)
      Dim node As System.Xml.XmlNode = _
      xml_document.DocumentElement.SelectSingleNode( _
      xpath_query)
      Dim label As System.Xml.XmlNode =
      node.SelectSingleNode(xpath_filter)
      label.Value = e.Label
      End Sub
      最后一個挑戰就是如何按照需求創建一個新的文件夾。query filter 允許用戶用一組文件夾而不是xml元素操作xml文檔。這樣對你想在那些文件夾周圍進行移動很有幫助的,而且它還可以告訴在哪里插入一個文件夾,但是它不能告訴你這個文件夾應該包含什么東西,你應該猜測文檔中的所有文件夾是否含有相同的結構或者內容。但是我們的目標是創建一個不需要任何預定的顯示xml 方法。因此,我選擇將這些怎人委托給應用程序控制。例如,客戶端代碼可以下面這樣寫:
      [C#]
      System.Xml.XmlDocument insert_fragment =
      new System.Xml.XmlDocument();
      insert_fragment.LoadXml(
      "<product id='New Item'>" +
      "<description/><ordercode/><price/>" +
      "<image/></product>");

      // The TreeView uses XmlInsertionNode to add
      // a new folder to the tree's underlying XML
      // document on request
      xmlTreeView1.XmlInsertionNode =
      insert_fragment.DocumentElement;



      [VB]
      Dim insert_fragment As New System.Xml.XmlDocument()
      insert_fragment.LoadXml(" & _
      "<product id='New Item'>" & _
      "<description/><ordercode/>"<price/>" & _
      "<image/></product>")
      xmlTreeView1.XmlInsertionNode = _
      insert_fragment.DocumentElement
      treeview 控件可以緩存一個結構的副本,將它作為一個臨時變量來創建一個新的文件夾集合。你所要做的僅僅是確保被定義得文件夾可以被filter query 識別,否則treeview 將不能顯示它。因為對于我們操作的文檔,xml通常是外部的(external)。在我使用它之前需要導入到文檔中


      [C#]
      // First you need to clone the node template, and
      // import it, because it originates from a different
      // document
      System.Xml.XmlNode copy_node = new_node.Clone();
      System.Xml.XmlNode insert_node =
      xml_document.ImportNode(copy_node, true);

      // Next locate which node should be its parent, and
      // insert it
      string xpath_query =
      buildXPathQuery(this.SelectedNode);
      System.Xml.XmlNode node =
      xml_document.DocumentElement.SelectSingleNode(
      xpath_query);
      node.AppendChild(insert_node);

      // Finally, apply the xpath filter to determine what
      // to display
      System.Xml.XmlNode expr =
      insert_node.SelectSingleNode(xpath_filter);
      System.Windows.Forms.TreeNode new_child =
      SelectedNode.Nodes.Add(expr.Value);
      populateTreeControl(insert_node, new_child.Nodes);

      // Select the node, to force the tree to expand
      SelectedNode = new_child;

      // And start editing the new folder name
      suppress_label_edit = false;
      new_child.BeginEdit();



      [VB]
      ' First you need to clone the node template, and
      ' import it, because it originates from a different
      ' document.
      Dim copy_node As System.Xml.XmlNode = new_node.Clone()
      Dim insert_node As System.Xml.XmlNode = _
      xml_document.ImportNode(copy_node, True)

      ' Next locate which node should be its parent,
      ' and insert it
      Dim xpath_query As String = _
      buildXPathQuery(Me.SelectedNode)
      Dim node As System.Xml.XmlNode =
      xml_document.DocumentElement.SelectSingleNode( _
      xpath_query)
      node.AppendChild(insert_node)

      ' Finally, apply the xpath filter to determine what
      ' should be
      ' displayed
      Dim expr As System.Xml.XmlNode = _
      insert_node.SelectSingleNode(xpath_filter)
      Dim new_child As System.Windows.Forms.TreeNode = _
      SelectedNode.Nodes.Add(expr.Value)
      populateTreeControl(insert_node, new_child.Nodes)

      ' Select the node, to force the tree to expand
      SelectedNode = new_child

      ' And start editing the new folder name
      suppress_label_edit = False
      new_child.BeginEdit()


      日韩精品一区二区三区高清