あなたは少し助けてくれることを願っています。私はXMLファイルに書き込もうとしていますが、XMLファイルに書き込むメソッドを書くのに苦労しています。これは、(メモ帳++などを使用して)手動で記述されたXMLファイルです:XDocumentを使ってXMLに書き込むことができますが、どこに書き込むかはわかります
<software>
<software_entry
name="Adobe Acrobat X Standard"
path="Applications\Acrobat\Acrobat X Standard\AcroStan.msi"
type="msi"
switches="/qn ALLUSERS=1"
/>
<software_entry
name="Adobe Acrobat X Professional"
path="Applications\Acrobat\Acrobat X Pro\AcroPro.msi"
type="msi"
switches="/qn ALLUSERS=1"
/>
</software>
アプリケーションのこの部分の目的は、GUIを使用していることを書くことです。
アプリケーションでは、ユーザーはXMLファイルの名前を選択します。それは、ユーザが保存したい場所を尋ねられたときに、プロセスの中でさらに一時フォルダに保存されます。ファイルの希望の名前を入力して「作成」をクリックすると、「createAndLoadXML」というメソッドが実行されます。その名前が示唆するように、XMLファイルを作成してロードします(フォーム上のリストビューコントロールを設定するため)。コードは以下で見ることができます。ユーザ入力のための4つのテキストボックスであり、さらに、この形態下今
private void createAndLoadXML()
{
// Method to create XML file based on name entered by user
string tempPath = Path.GetTempPath();
string configFileName = fileNameTextBox.Text;
string configPath = tempPath + configFileName + ".xml";
// Create XDocument
XDocument document = new XDocument(
new XDeclaration("1.0", "utf8", "yes"),
new XComment("This XML file defines the software selections for use with the Software Installer"),
new XComment("XML file generated by Software Installer"),
new XElement("software",
new XElement("software_entry",
new XAttribute("name", ""),
new XAttribute("path", ""),
new XAttribute("type", ""),
new XAttribute("switches", ""))
)
);
document.Save(configPath);
configCreateLabel.Visible = true;
document = XDocument.Load(configPath);
}
、作成した属性(名前、パス、タイプおよびスイッチ)アイデアは、これらのテキストボックスに書き込むユーザであるに関するそれぞれ、クリック'追加'ボタンをクリックすると、プログラムは4つのフィールドを属性としてこのXMLファイルに書き込みます。これまでのところ、私はひどく不完全で、LINQ to XMLを使用していないこのコードを持っています。
private void writeToXML()
{
// Method to write lines to XML file based on user input
// Sets string variables
string fileName = softwareNameTextBox.Text;
string filePath = filePathTextBox.Text;
string fileType = installerType.Text.ToString();
string installSwitches = installSwitchesTextBox.Text;
using (XmlWriter xw = XmlWriter.Load(configPath)) //This line is wrong, I know
{
xw.WriteStartElement("software");
xw.WriteElementString("name", fileName);
xw.WriteElementString("path", filePath);
xw.WriteElementString("type", fileType);
xw.WriteElementString("switches", installSwitches);
xw.WriteEndElement();
}
}
基本的に、ユーザーがテキストボックスコントロールに入力したデータをXMLに書き込む上記の方法を教えてもらえますか?私は以前に作成したXMLドキュメント(createAndLoadXMLメソッドから)をロードする方法と、LINQ to XMLを使用してルート要素(ソフトウェア)内に書き込む方法がわかりません。
あなたの最善の策は、フォームから記入xattributesで新しいXElementオブジェクトを作成し、XDocumntとして全体のXMLを読み込むメモリにXDocumentに追加し、既存のXMLファイルの上にそれを保存だろう。 – jzm
提案していただきありがとうございます。 – CSF90