Как получить содержимое прочитанного XML-файла в текстовом поле второй формы?
Привет Кто-То,
У меня нет "System.Xml.XmlDocument "или" System.Xml.XmlReader " в моих возможностях использования системы. Есть ли что-то, что я должен сделать, чтобы добавить их, пожалуйста? И как мне это сделать? Я скачал бесплатную версию Visual Studio free Community 2015. Единственное, что в ней находятся "через System.Xml" и "через систему.В LINQ". Но я не могу работать с Linq. Для меня это в новинку. Кроме того, прошло уже 5 лет с тех пор, как я больше не кодирую, так что я очень заржавел.
Тем не менее, я хотел добавить содержимое выбранного XML-файла в текстовое поле на второй форме, чтобы пользователь мог отредактировать этот файл и сохранить его впоследствии.
Есть ли кто-нибудь, кто мог бы мне помочь, пожалуйста? Потому что единственное, что происходит, - это пользователь может перейти к папке на своем жестком диске, выбрать папку со всеми XML-файлами. Затем он имеет обзор всех файлов в первом текстовом поле и может выбрать один файл для открытия там, где открывается вторая форма, но без текстового поля!? Так что на самом деле мне не хватает моего второго текстового поля и xml-содержимого.
Заранее спасибо.
Что я уже пробовал:
public partial class Form1 : Form { //get files from directory string[] path = Directory.GetFiles(@"C:\Users\decraiec\Documents\Atrias_Automated", "*.XML"); public Form1() { InitializeComponent(); listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged; } private void btnGetFiles_Click(object sender, EventArgs e) { //read all files in path FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() == DialogResult.OK) { //if there is text in the listbox clear it first listBox1.Items.Clear(); //create an array for the files and the directory. string[] files = Directory.GetFiles(fbd.SelectedPath); string[] dirs = Directory.GetDirectories(fbd.SelectedPath); //show every file in the listbox foreach (string file in files) { listBox1.Items.Add(file); } foreach (string dir in dirs) { listBox1.Items.Add(dir); } } } public void listBox1_SelectedIndexChanged(object sender, EventArgs e) { string currentItem = listBox1.SelectedItem.ToString(); if (listBox1.SelectedIndex == -1) { MessageBox.Show("Item is not available in Listbox"); } else { //read the file and give it back in the second form in the listbox var xmlString = File.ReadAllText(currentItem.ToString()); var stringReader = new StringReader(xmlString); var dsSet = new DataSet(); dsSet.ReadXml(stringReader); //show second form with listbox on it and the clicked xml file content frmEditXML frm2 = new frmEditXML(); TextBox txb2 = new TextBox(); txb2.Text = dsSet.GetXml(); txb2.Text = dsSet.GetXmlSchema(); frm2.ShowDialog(); txb2.Show(); } } private void Form1_Load(object sender, EventArgs e) { Application.Exit(); } }
public partial class frmEditXML : Form { private void frmEditXML_Load(object sender, EventArgs e) { //open textfile and show content that was selected } private void btnSaveChanges_Click(object sender, EventArgs e) { //Text from the richtextbox string strsave = tbxSaveChanges.Text; //Create a new SaveFileDialog object using (SaveFileDialog sfdSave = new SaveFileDialog()) try { //Available file extension sfdSave.Filter = "XML (*.xml*)|*.xml*"; //Show SaveFileDialog if (sfdSave.ShowDialog() == DialogResult.OK && sfdSave.FileName.Length > 0) { //save file as xml UTF8Encoding utf8 = new UTF8Encoding(); StreamWriter sw = new System.IO.StreamWriter(sfdSave.FileName, false, utf8); sw.Write(strsave + " - NEG"); sw.Close(); } } catch (Exception errorMsg) { MessageBox.Show(errorMsg.Message); } Application.Exit(); } private void frmEditXML_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); } }
ZurdoDev
Щелкните правой кнопкой мыши свой проект и добавьте ссылку на него. System.Xml. Тогда они проявятся в вашем использовании.
AAB40
Привет, Ряндев, спасибо, но я уже пробовал это сделать, и список ссылок, которые мы можем добавить, очень длинный без каких-либо других добавок "xml". единственное, что там есть, - это то, что у меня уже есть: "использование System.Xml;". Но тем не менее, если я буду следовать образу мыслей Ричарда, мне это больше не понадобится (я думаю). Спасибо, что ответили.