11

I know there's no built in converter to convert an array of objects to XML. Is there a quick rudimentary way to create a XML out of the array to help me do a LINQ to XML join between this one and another XML I have?

2
  • Do you mean besides just writing a list of tag/value pairs to a text file? Commented Oct 14, 2011 at 17:56
  • You may not have to convert the objects to XML; that's not a requirement for doing joins when you use LINQ to XML. You should provide more details, like what type of query you're trying to write and what the class looks like for your objects. Commented Oct 14, 2011 at 17:56

2 Answers 2

19

You can use Linq to XML, it is really easy to map from your existing data structures to XML, i.e.:

int[] values = { 1, 2, 17, 8 };

XDocument doc = new XDocument();
doc.Add(new XElement("root", values.Select( x=> new XElement("item", x))));

produces the following output:

<root>
  <item>1</item>
  <item>2</item>
  <item>17</item>
  <item>8</item>
</root>
Sign up to request clarification or add additional context in comments.

1 Comment

Neat! Is there any way we could do the same for a multidimensional array? For string[,] values
4

You can always use XmlSerializer to transform a list of C# objects to XML document. The result of the serialization may be customized by using metadata attributes to designate, for example, root nodes or which class property is to be ignored etc... You will definitely need to apply the attributes to make the resulting XML conform as much as possible to your requirements.

Here is a basic tutorial on serializing an Object to XML:

2 Comments

Also refer to this post for a lot of examples of serializing a list of objects stackoverflow.com/questions/1212742/…
First url is not working anymore

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.