views:

194

answers:

2

How can I see the XML output of following C# code? I can see that it uses XElement, but where I can locate the XML file or the output?

private void Form1_Load(object sender, EventArgs e)
{
    XElement doc = new XElement("searchresults"); // root element

    //create 
    XElement result = new XElement("result",
                             new XElement("Resulthead", "AltaVista"),
                             new XElement("ResultURL", "www.altavista.com/"),
                             new XElement("Description", "AltaVista provides the most comprehensive search experience on the Web! ... "),
                             new XElement("DisplayURL", "www.altavista.com/")
                             );
    doc.Add(result);

    //add another search result
    result = new XElement("result",
                             new XElement("Resulthead", "Dogpile Web Search"),
                             new XElement("ResultURL", "www.dogpile.com/"),
                             new XElement("Description", "All the best search engines piled into one. All the best search engines piled into one."),
                             new XElement("DisplayURL", "www.dogpile.com/")
                             );

    doc.Add(result);

    string xmlString = doc.ToString(SaveOptions.DisableFormatting);
}
+3  A: 

Your result only exists inside your "xmlString" variable - it's not being written anywhere, neither onto the console / window, nor into a file.

You'll have to add a

doc.Save(@"C:\your-xml-file-name.xml");

line at the end of your method to save the contents to a file on disk.

Make sure to use a full path, or check in your current directory where the app is running (i.e. in (yourappname)\bin\debug, most likely).

Marc

marc_s
i put the above code at the end but there is no xml outfile created.
i tried this there is no files there!doc.Save(@"D:\VSProjects\SearchEE\SearchEE\bin\Debug\searchresults.xml");
i am not getting any error ; i do have access to that directory
This project is at the same location:D:\VSProjects\SearchEE\SearchEE\bin\Debug
is there any reference need to create in project ?
This is last two lines of the codestring xmlString = doc.ToString(SaveOptions.DisableFormatting); doc.Save(@"D:\VSProjects\SearchEE\SearchEE\bin\Debug\searchresults.xml");
OK, this is odd - this just works ....... can you check in the debugger that the string "xmlString" contains the correct XML as you'd expect?
marc_s
As for reference: since you're using Linq-to-XML, you need `using System.Xml.Linq;` but if you didn't have that, the code wouldn't even compile....
marc_s
there is using System.Xml.Linq;, but there is no output in the string
does the above code works for you, do u did anything extra other than copy pasting the code in the window?
marc_s
This is really really strange, so let's try crazy stuff... Is the Load event hooked up to the `Form1_Load` method you showed? Look it up in the Properties window, click in the little lightning bolt and scroll down to Load. Or, add a button, and place that code into the Click event handler. Run an click the button. Does it work?
Martinho Fernandes
marc_s
hehehehe its worked ..thanks a ton!!!!!
Did you figure out what the problem was? I'm curious now...
Martinho Fernandes
+2  A: 

That code is not writing XML anywhere but memory (the xmlString variable).

You could try calling XElement.Save() and get it on a file:

doc.Save(@"filename.xml");

Or use the debugger and look at the variables.

Or, if you prefer, simply put it in a TextBox:

textBox.Text = xmlString;

Be warned it may not be nicely formatted...

Martinho Fernandes
i put the above code at the end but there is no xml outfile created. Like this...........doc.ToString(SaveOptions.DisableFormatting); doc.Save(@"searchresults.xml");
i tried textbox , but there is no value inside text box tooo