2011-12-21 12 views
0

私のasp.net GUIからXMLファイルにデータを追加したいと思います.GUIにテキストボックスがあります。要素を1つのXMLファイルから別のXMLファイルにコピーして名前を変更する#

ユーザーは "IL" を入力した場合それでは、私は、このように

<Employee Location="IL"> 
    <Male Value="True" /> 
    <Name Value="xxx" /> 
</Employee> 

XMLファイルのセクションを追加したい:

<Emp> 
    <Employee Location="NJ"> 
    <Male Value="True" /> 
    <Name Value="xxx" /> 
    </Employee> 
    <Employee Location="NY"> 
    <Male Value="True" /> 
    <Name Value="xxx" /> 
    </Employee> 
</Emp> 

注:

たびに私はここで新しいセクションを追加します。内側の要素は一定です。つまり、以下の値は常に同じです。

<Male Value="True" /> 
<Name Value="xxx" /> 

私はLINQ to XMLを使用してこれをどのように達成できますか?

+0

実際にlinq to xmlチュートリアルでは要素を追加してxmlファイルに保存する方法を説明します。 –

+0

投稿する前にあなた自身でいくつかの調査を行います:) LinqでXmlを検索するか、XmlをC#で検索すると、多くの洞察が得られます。 –

+0

@ MarkW私の質問はここで私はコードの定数部分をコピーする方法の提案が必要です。私は飛行中にコピーするか、別のXMLファイルに保存する必要がありますか? – Macnique

答えて

3

あなたが追加しているノードの唯一の可変部分がLocation属性であるので、あなたは非常に簡単に、次のいずれかのように、方法にそのプロセスを抽出することができます。

private XElement CreateEmployeeNode(string location) 
{ 
    return new XElement("Employee", 
     new XAttribute("Location", location), 
     new XElement("Male", new XAttribute("Value", "True")), 
     new XElement("Name", new XAttribute("Value", "xxx")) 
    ); 
} 

今、あなたはあなたの既存のXMLを更新したいとき新しい従業員データを使用すると、次のようになります。

var document = XDocument.Parse(xmlString); // or .Load, depending how you get XML 
var newEmployeeLocation = textBox.Text; 
document.Element("Emp").Add(CreateEmployeeNode(newEmployeeLocation)); 

新しい従業員ノードが既存のノードに追加されます。

LINQ to XMLによるXMLツリー作成の詳細については、オンラインガイドhereを参照してください。

関連する問題