Это получит Вас достаточно близкий, и я использую его в производстве и никогда не имел коллизии. Однако при рассмотрении конструктора для гуида в отражателе Вы будете видеть все проверки, которые он осуществляет.
public static bool GuidTryParse(string s, out Guid result)
{
if (!String.IsNullOrEmpty(s) && guidRegEx.IsMatch(s))
{
result = new Guid(s);
return true;
}
result = default(Guid);
return false;
}
static Regex guidRegEx = new Regex("^[A-Fa-f0-9]{32}$|" +
"^({|\\()?[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}(}|\\))?$|" +
"^({)?[0xA-Fa-f0-9]{3,10}(, {0,1}[0xA-Fa-f0-9]{3,6}){2}, {0,1}({)([0xA-Fa-f0-9]{3,4}, {0,1}){7}[0xA-Fa-f0-9]{3,4}(}})$", RegexOptions.Compiled);
Вы хотите использовать метод оси Потомки
, а затем вызвать метод расширения FirstOrDefault
, чтобы получить первый элемент.
Вот простой пример:
using System;
using System.Linq;
using System.Xml.Linq;
class Program
{
static void Main()
{
String 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>";
XElement element = XElement.Parse(xml)
.Descendants()
.FirstOrDefault();
}
}
Чтобы немного добавить к ответу Эндрю, если вы не знаете, является ли smartForm
корневым элементом, но все же хотите, чтобы текст заголовка первой такой записи вы бы использовали:
xml.DescendantsAndSelf("smartForm").Descendants("title").First().Value;
Для этого требуется , чтобы где-то внутри был элемент smartForm с элементом заголовка.
Если вы хотите, чтобы элемент заголовка был непосредственным дочерним элементом в smartForm
вы можете использовать:
xml.DescendantsAndSelf("smartForm").Elements("title").First().Value;
Если вас не заботит имя title
, и вы просто хотите первый подэлемент, тогда вы должны использовать:
xml.DescendantsAndSelf("smartForm").Elements().First().Value;