große Probleme mit Aufruf einer function

E

encom

Hallo, ich einen Button über den ich per Opendialog eine xml Datei öffnen und deren Inhalt in eine ListBox laden kann.
Außerdem habe ich eine funktion, mit der ich neue Einträge in die Xml Datei einfügen kann.

Ich bin anfänger und komme nicht drauf wie ich die Funktion über einen Button aufrufen kann. Probmele mit dem doc als Parameter :-(


Code:
private void btnLoad_Click(object sender, System.EventArgs e)
		{
			OpenFileDialog dlgOpen = new OpenFileDialog();
			dlgOpen.Filter = "XML-Dateien|*.xml";
			if (DialogResult.OK == dlgOpen.ShowDialog())
			{
			
				//ListBox leeren
				lbElements.Items.Clear();

				//Datei laden und anzeigen
				XmlDocument doc = new XmlDocument();
				doc.Load(dlgOpen.FileName);
				this.Text = dlgOpen.FileName;
				ShowDoc(doc, lbElements);
			}
        }

		

		private void ShowDoc(XmlDocument doc, ListBox box)
		{
			XmlNodeList list = doc.GetElementsByTagName("title");
			foreach(XmlElement node in list)
			{
				lbElements.Items.Add(node.InnerXml);
			}
		}




		//fügt ein neues buch zum dokument hinzu
		private void NeuesBuch(XmlDocument doc)
		{
			//einen neuen Knoten anlegen
			XmlElement element = doc.CreateElement("book");

			//jetzt das neue Buch im Dokument eintragen
			doc.DocumentElement.AppendChild(element);

			//die Knoten title, author und price anlegen
			XmlElement title = doc.CreateElement("title");
			title.InnerText = edTitle.Text;

			XmlElement author = doc.CreateElement("author");
			author.InnerText = edAuthor.Text;

			XmlElement price = doc.CreateElement("price");
			price.InnerText = edPrice.Text;

			//ein Attribut zu Demozwecken
			price.SetAttribute("currency", "EUR");

			//jetzt unter dem neuen Knoten einhängen
			element.AppendChild(title);
			element.AppendChild(author);
			element.AppendChild(price);

			doc.Save(this.Text);
			//MessageBox.Show(doc.OuterXml);
		}

		private void btnInsert_Click(object sender, System.EventArgs e)
		{
			//NeuesBuch(doc);
		}

Ich hoffe einer kann helfen

Danke
 
Hallo.

Du kannst aus deiner Variablen die das Document enthält, eine Variable machen, die in der gesamten Klasse zugänglich ist, und somit auch in der Methode "neuesBuch".

Code:
private XmlDocument doc;
private void btnLoad_Click(object sender, System.EventArgs e)
{
	[...]
	if (DialogResult.OK == dlgOpen.ShowDialog())
	{
		[...]
		doc = new XmlDocument();
		doc.Load(dlgOpen.FileName);
		[...]
	}
}
		
private void ShowDoc(XmlDocument doc, ListBox box)
{
	XmlNodeList list = doc.GetElementsByTagName("title");
	foreach(XmlElement node in list)
	{
		lbElements.Items.Add(node.InnerXml);
	}
}

//fügt ein neues buch zum dokument hinzu
private void NeuesBuch()
{
	//einen neuen Knoten anlegen
	XmlElement element = doc.CreateElement("book");
	[...]
}

private void btnInsert_Click(object sender, System.EventArgs e)
{
	NeuesBuch();
}

Das wäre eine Möglichkeit.

Mfg,
Alex
 
Zurück