With this code I can get the title out of the following XML file:
var xml = XElement.Load (@"C:\\test\\smartForm-customersMain.xml");
string title = xml.Element("title").Value;
But how do I make it more exact, e.g. "get the first element after the smartForm element, e.g. something like this:
//PSEUDO-CODE:
string title = xml.Element("smartForm").FirstChild("title");
The XML:
<?xml version="1.0" encoding="utf-8" ?>
<smartForm idCode="customersMain">
<title>Customers Main222</title>
<description>Generic customer form.</description>
<area idCode="generalData" title="General Data">
<column>
<group>
<field idCode="anrede">
<label>Anrede</label>
</field>
<field idCode="firstName">
<label>First Name</label>
</field>
<field idCode="lastName">
<label>Last Name</label>
</field>
</group>
</column>
</area>
<area idCode="address" title="Address">
<column>
<group>
<field idCode="street">
<label>Street</label>
</field>
<field idCode="location">
<label>Location</label>
</field>
<field idCode="zipCode">
<label>Zip Code</label>
</field>
</group>
</column>
</area>
</smartForm>
You want to use the
Descendants
axis method and then call theFirstOrDefault
extension method to get the first element.Here is a simple example:
My task was to find first child of specified name. If xml uses namespaces, than instead of
Write
To add slightly to Andrew's answer if you do not know whether
smartForm
is the root element but still want the title text of the first such entry you would use:This requires that there be a smartForm element with a title element somewhere within it.
If you wanted to ensure that the title element was an immediate child in
smartForm
you could use:If you didn't care what the name of
title
was and just wanted the first sub element then you would use: