XML string to XML document

C#Xml

C# Problem Overview


I have a whole XML document in a String which i need to convert to a XML document and parse tags in the document

C# Solutions


Solution 1 - C#

This code sample is taken from csharp-examples.net, written by Jan Slama:

> To find nodes in an XML file you can use XPath expressions. Method XmlNode.Selec­tNodes returns a list of nodes selected by the XPath string. Method XmlNode.Selec­tSingleNode finds the first node that matches the XPath string.

XML:

> > > John > Smith > > > James > White > >

CODE:

> XmlDocument xml = new XmlDocument(); > xml.LoadXml(myXmlString); // suppose that myXmlString contains "..." >
> XmlNodeList xnList = xml.SelectNodes("/Names/Name"); > foreach (XmlNode xn in xnList) > { > string firstName = xn["FirstName"].InnerText; > string lastName = xn["LastName"].InnerText; > Console.WriteLine("Name: {0} {1}", firstName, lastName); > }

Solution 2 - C#

Using Linq to xml

Add a reference to System.Xml.Linq

and use

XDocument.Parse(string xmlString)

Edit: Sample follows, xml data (TestConfig.xml)..

<?xml version="1.0"?>
<Tests>
  <Test TestId="0001" TestType="CMD">
    <Name>Convert number to string</Name>
    <CommandLine>Examp1.EXE</CommandLine>
    <Input>1</Input>
    <Output>One</Output>
  </Test>
  <Test TestId="0002" TestType="CMD">
    <Name>Find succeeding characters</Name>
    <CommandLine>Examp2.EXE</CommandLine>
    <Input>abc</Input>
    <Output>def</Output>
  </Test>
  <Test TestId="0003" TestType="GUI">
    <Name>Convert multiple numbers to strings</Name>
    <CommandLine>Examp2.EXE /Verbose</CommandLine>
    <Input>123</Input>
    <Output>One Two Three</Output>
  </Test>
  <Test TestId="0004" TestType="GUI">
    <Name>Find correlated key</Name>
    <CommandLine>Examp3.EXE</CommandLine>
    <Input>a1</Input>
    <Output>b1</Output>
  </Test>
  <Test TestId="0005" TestType="GUI">
    <Name>Count characters</Name>
    <CommandLine>FinalExamp.EXE</CommandLine>
    <Input>This is a test</Input>
    <Output>14</Output>
  </Test>
  <Test TestId="0006" TestType="GUI">
    <Name>Another Test</Name>
    <CommandLine>Examp2.EXE</CommandLine>
    <Input>Test Input</Input>
    <Output>10</Output>
  </Test>
</Tests>

C# usage...

XElement root = XElement.Load("TestConfig.xml");
IEnumerable<XElement> tests =
    from el in root.Elements("Test")
    where (string)el.Element("CommandLine") == "Examp2.EXE"
    select el;
foreach (XElement el in tests)
    Console.WriteLine((string)el.Attribute("TestId"));

This code produces the following output: 0002 0006

Solution 3 - C#

Depending on what document type you want you can use XmlDocument.LoadXml or XDocument.Load.

Solution 4 - C#

Try this code:

var myXmlDocument = new XmlDocument();
myXmlDocument.LoadXml(theString);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSudantha View Question on Stackoverflow
Solution 1 - C#SaurabhView Answer on Stackoverflow
Solution 2 - C#almog.oriView Answer on Stackoverflow
Solution 3 - C#Fredrik MörkView Answer on Stackoverflow
Solution 4 - C#WaltiDView Answer on Stackoverflow