user603007
user603007

Reputation: 11794

how to display right xml format

I am trying to create an xml doc with a prefix g:

c#

 static void Main(string[] args)
        {
            XNamespace g = "g:";
            XElement contacts =
    new XElement("Contacts",
        new XElement("Contact",
            new XElement( g+"Name", "Patrick Hines"),
            new XElement("Phone", "206-555-0144"),
            new XElement("Address",
                new XElement("street","this street"))               

        )
    );
            Console.WriteLine(contacts);
        }

instead it shows up with:

..<contacts>
  <contact>
    <name xmlns="g:">
...

Upvotes: 0

Views: 70

Answers (3)

Ajay
Ajay

Reputation: 6590

XDocument is in System.Xml.Linq namespace. So, at the top of your code file, add:

using System.Xml.Linq;

Then you can write the data to your file the following way:

XDocument doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes"),
            new System.Xml.Linq.XElement("Contacts"),
            new XElement("Contact",
            new XElement("Name", c.FirstOrDefault().DisplayName),
            new XElement("PhoneNumber", c.FirstOrDefault().PhoneNumber.ToString()),
            new XElement("Email", "[email protected]"));
doc.Save(...);

Upvotes: 0

Zaheer Ahmed
Zaheer Ahmed

Reputation: 28588

Your code is working fine for me (output is):

<Contacts>
  <Contact>
    <Name xmlns="g:">Patrick Hines</Name>
    <Phone>206-555-0144</Phone>
    <Address>
      <street>this street</street>
    </Address>
  </Contact>
</Contacts>

if you still can not get the correct output then you can try this:

new XDocument(
    new XElement("Contacts", 
        new XElement("Contact", 
             new XElement("Name", "Patrick Hines"),
             new XElement("Phone", "206-555-0144"),
             new XElement("Address",  
                        new XElement("street","this street"))
        )    
    )
).Save("foo.xml");

Upvotes: 0

Damith
Damith

Reputation: 63105

XNamespace g = "http://somewhere.com";
XElement contacts =
    new XElement("Contacts", new XAttribute(XNamespace.Xmlns + "g", g),
        new XElement("Contact",
            new XElement( g+"Name", "Patrick Hines"),
            new XElement("Phone", "206-555-0144"),
            new XElement("Address",
                new XElement("street","this street"))               

        )
    );

OUTPUT :

<Contacts xmlns:g="http://somewhere.com">
  <Contact>
    <g:Name>Patrick Hines</g:Name>
    <Phone>206-555-0144</Phone>
    <Address>
      <street>this street</street>
    </Address>
  </Contact>
</Contacts>

Upvotes: 1

Related Questions