XAttribute Constructor (XName, Object)
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Initializes a new instance of the XAttribute class from the specified name and value.
Assembly: System.Xml.Linq (in System.Xml.Linq.dll)
Parameters
- name
- Type: System.Xml.Linq.XName
The XName of the attribute.
- value
- Type: System.Object
An Object containing the value of the attribute.
| Exception | Condition |
|---|---|
| ArgumentNullException | The name or value parameter is Nothing. |
There is an implicit conversion from string to XName. Typical use of this constructor is to specify a string as the first parameter instead of creating a new XName, as follows:
XElement root = new XElement("Root", new XAttribute("AnAttributeName", "Content") );
You can also use the addition operator overload with an XNamespace and a string to create an XName, as follows:
XNamespace aw = "http://www.adventure-works.com"; XElement root = new XElement(aw + "Root", new XAttribute(aw + "AnAttributeName", "Content") );
These same approaches will work for Visual Basic, however XML literals provide a better approach for creating XML trees.
The value parameter can be a String, double, float, decimal, bool, DateTime, or TimeSpan. If the value is a DateTime or TimeSpan, the value of the attribute is formatted correctly per the W3C specifications.
The following example uses this constructor to create attributes. It passes strings as the first argument to the XAttribute constructor, which are then implicitly converted to XName objects. The attributes are added to an element.
Dim output As New StringBuilder Dim dbl As Double = 12.345 Dim attArray As XAttribute() = { _ New XAttribute("Att4", 1), _ New XAttribute("Att5", 2), _ New XAttribute("Att6", 3) _ } Dim dt As DateTime = New DateTime(2006, 10, 6, 12, 30, 0) Dim root As XElement = <Root Att1="Some text" Att2=<%= dbl %> Att3=<%= dt %> <%= attArray %> /> output.Append(root) output.Append(Environment.NewLine) OutputTextBlock.Text = output.ToString()