2009-05-19 34 views
35

XMLファイルを動的に作成するにはどうすればいいですか?XMLノードに属性を追加する

<Login> 
    <id userName="Tushar" passWord="Tushar"> 
     <Name>Tushar</Name> 
     <Age>24</Age> 
    </id> 
</Login> 

私はidタグ内の属性(すなわち、userNameの=「」とパスワードを=「」)を作成することはできませんよ。

私はWindowsアプリケーションでC#を使用しています。 Loginがある:あなたが必要な場合があります

いくつかの重要な名前空間には、

using System.Xml; 
using System.IO; 

答えて

68

まあidが実際にルートノードではないです。

XmlElement.SetAttributeを使用して属性(タグではなく、btw)を指定する必要があります。 XmlWriter、DOM、その他のXML APIのいずれを使用していても、ファイルの作成方法を指定していません。

あなたが行っているコードの例を挙げることができれば、多くの助けになります。

using System.Xml.Linq 

     var xmlNode = 
      new XElement("Login", 
         new XElement("id", 
          new XAttribute("userName", "Tushar"), 
          new XAttribute("password", "Tushar"), 
          new XElement("Name", "Tushar"), 
          new XElement("Age", "24") 
         ) 
      ); 
     xmlNode.Save("Tushar.xml"); 

恐らくコーディングのこのよう:

using System; 
using System.Xml; 

class Test 
{ 
    static void Main() 
    { 
     XmlDocument doc = new XmlDocument(); 
     XmlElement root = doc.CreateElement("Login"); 
     XmlElement id = doc.CreateElement("id"); 
     id.SetAttribute("userName", "Tushar"); 
     id.SetAttribute("passWord", "Tushar"); 
     XmlElement name = doc.CreateElement("Name"); 
     name.InnerText = "Tushar"; 
     XmlElement age = doc.CreateElement("Age"); 
     age.InnerText = "24"; 

     id.AppendChild(name); 
     id.AppendChild(age); 
     root.AppendChild(id); 
     doc.AppendChild(root); 

     doc.Save("test.xml"); 
    } 
} 
28

XMLを構築するための最新かつおそらく最大の方法は、XMLにLINQを使用することです:それまでの間、ここにあなたが説明したファイルを作成し、いくつかのコードですコードは出力と似ています(上記のJonの例ではそうではありません)。しかし、私は、この比較的簡単な例をコーディングしているうちに、あなたが移動しなければならないカンマのカートロードの間に自分の道を失う傾向があることを発見しました。ビジュアルスタジオのコードの自動スペーシングも役に立ちません。

+4

+1新しい暑さ –

23

XmlNodeオブジェクトに属性を追加する方法もありますが、これは場合によっては便利です。

msdn.microsoft.comにこの他の方法が見つかりました。

using System.Xml; 

[...] 

//Assuming you have an XmlNode called node 
XmlNode node; 

[...] 

//Get the document object 
XmlDocument doc = node.OwnerDocument; 

//Create a new attribute 
XmlAttribute attr = doc.CreateAttribute("attributeName"); 
attr.Value = "valueOfTheAttribute"; 

//Add the attribute to the node  
node.Attributes.SetNamedItem(attr); 

[...] 
関連する問題