PDA

View Full Version : سوال: بدست آوردن xml درخت



mohamdmahdi
چهارشنبه 10 تیر 1388, 12:39 عصر
سلام
یک تری ویو دارم که با xml پر می شود
روی یکی از نودهای درخت سلکت می کنم و نام آن را تغییر می دهم
چطور xml درخت جدید را بدست بیاورم تا ذخیره کنم

mehdimdp
چهارشنبه 10 تیر 1388, 13:46 عصر
با چه روشي درخت رو از xml پر ميكني؟

mohamdmahdi
چهارشنبه 10 تیر 1388, 14:41 عصر
با XmlDataSource1 که به یک فایل xml وصل است و در قسمت DataSourceId درخت (treeview) می اوریم
کد نویسی نمی کنم در خود برنامه webdeveloper 2005 وجود دارد
برای تغییر نام در درخت بوسیله کد زیر عمل می کنم


TreeView1.SelectedNode.Text=TextBox1.Text

حالا می خواهم محتویات درخت جدید را روی xml قبلی ذخیره کنم

mohamdmahdi
چهارشنبه 10 تیر 1388, 18:07 عصر
از این کد کسی سر در می آورد



protected void Button1_Click1(object sender, EventArgs e)
{
XmlDocument d = new XmlDocument();
XmlNode n = d.CreateNode(XmlNodeType.Element, "root", "");
foreach (TreeNode t in TreeView1.Nodes)
{
n.AppendChild(getXmlNode(t, d));
}
d.AppendChild(n);
d.Save(AppDomain.CurrentDomain.BaseDirectory + "out.xml");
}
private XmlNode getXmlNode(TreeNode tnode, XmlDocument d)
{
XmlNode n = d.CreateNode(XmlNodeType.Element, tnode.Text, "");

foreach (TreeNode t in tnode.ChildNodes)
{
n.AppendChild(getXmlNode(t, d));
}
return n;
}

به این کد ایراد می گیرد

XmlNode n = d.CreateNode(XmlNodeType.Element, tnode.Text, "");
جای خالی باید با چه چیزی پر شود

mehdimdp
چهارشنبه 10 تیر 1388, 19:34 عصر
به این کد ایراد می گیرد

XmlNode n = d.CreateNode(XmlNodeType.Element, tnode.Text, "");

درحالت طبيعي اين كد اشكالي نداره
احتمالا به n گير ميده چون قبلا تعريف شده.

mohamdmahdi
شنبه 13 تیر 1388, 09:29 صبح
این کد درسته و خوب کار می کند


///<summary>
/// Recurses through a TreeView web control exports the results
/// to an XML file nested to match the TreeView. Properties are
/// saved as attributes when a value is set.
///<summary>
///<param name="myTreeView">A TreeView web control.</param>
///<param name="myFile">A file path and name with extension.</param>
protectedvoid TreeViewToXml(System.Web.UI.WebControls.TreeView myTreeView, string myFile)
{
try
{
XmlTextWriter xmlWriter = newXmlTextWriter(myFile, Encoding.UTF8);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 3;
xmlWriter.WriteStartDocument();
// Opens <TreeView>, the root node.
xmlWriter.WriteStartElement("TreeView");

// Go through child nodes.
ProcessNodes(myTreeView.Nodes[0].ChildNodes
, xmlWriter);
// </TreeView>, the root node.
xmlWriter.WriteEndElement();
xmlWriter.WriteEndDocument();
// Closes the object and saves the document to disk.
xmlWriter.Close();
}
catch
{
throw; // Throw any exceptions up the line.
}
}
///<summary>
/// Recursively processes each TreeNode within a TreeNodeCollection
/// from a TreeView web control.
///</summary>
///<param name="myTreeNodes">A TreeNodeCollection from a TreeView web
/// control.</param>
///<param name="myWriter">A XmlTextWriter being used to hold the XML
/// results from the TreeViewToXml method.</param>
protectedvoid ProcessNodes(TreeNodeCollection myTreeNodes, XmlTextWriter myWriter)
{
foreach (TreeNode thisNode in myTreeNodes)
{
myWriter.WriteStartElement("TreeNode"); // <TreeNode>.

// Go through each property and set it as an attribute if it exists.
if(!String.IsNullOrEmpty(thisNode.Text))
myWriter.WriteAttributeString("Text", thisNode.Text);
if (!String.IsNullOrEmpty(thisNode.ImageToolTip))
myWriter.WriteAttributeString("ImageToolTip",
thisNode.ImageToolTip);
if (!String.IsNullOrEmpty(thisNode.ImageUrl))
myWriter.WriteAttributeString("ImageUrl", thisNode.ImageUrl);
if (!String.IsNullOrEmpty(thisNode.NavigateUrl))
myWriter.WriteAttributeString("NavigateUrl",
thisNode.NavigateUrl);
if (!String.IsNullOrEmpty(thisNode.SelectAction.ToStr ing()))
myWriter.WriteAttributeString("SelectAction",
thisNode.SelectAction.ToString());
if (!String.IsNullOrEmpty(thisNode.Target))
myWriter.WriteAttributeString("Target", thisNode.Target);
if (!String.IsNullOrEmpty(thisNode.ToolTip))
myWriter.WriteAttributeString("ToolTip", thisNode.ToolTip);
if (!String.IsNullOrEmpty(thisNode.Value))
myWriter.WriteAttributeString("Value", thisNode.Value);
if (!String.IsNullOrEmpty(thisNode.ValuePath))
myWriter.WriteAttributeString("ValuePath", thisNode.ValuePath);
if (thisNode.ShowCheckBox.HasValue)
myWriter.WriteAttributeString("ShowCheckBox",
thisNode.ShowCheckBox.ToString());
if (thisNode.Expanded.HasValue)
myWriter.WriteAttributeString("Expanded",
thisNode.Expanded.ToString());
myWriter.WriteAttributeString("Selected",
thisNode.Selected.ToString());
myWriter.WriteAttributeString("Checked",
thisNode.Checked.ToString());

// Recurse through any child nodes.
if (thisNode.ChildNodes.Count > 0)
ProcessNodes(thisNode.ChildNodes, myWriter);
myWriter.WriteEndElement(); // </TreeNode>.
}
}