Я предполагаю, что вы уже загрузили XML в ваш XmlDocument
- правильно?
В этом случае вы сможете использовать что-то вроде этого:
string xpath = string.Format("/UrlRoutes/*[Source='{0}']", sourceX);
XmlNode node = xmlDoc.SelectSingleNode(xpath);
if(node != null)
{
// use the node to do whatever you need to do
}
Выражение xpath в основном выбирает любой узел в /UrlRoutes
, который содержит элемент <Source>
с данной строкой в качестве значения.Это означает: значения <Source>
должны быть уникальными.
Обновление: если вы знаете , вы хотите искать только внутри узлов <UserSettings>
, вы можетесделайте ваше выражение XPath более избирательным:
string parentNode = "UserSettings";
string sourceX = "settings/subscriptions";
string xpath = string.Format("/UrlRoutes/{0}[Source='{1}']", parentNode, sourceX);
Но с этим более избирательным XPath вы бы не смогли бы найти узел, когда в вашем примере sourceX = "activity/editactivity"
(так как не внутри <UserSettings>
узла)
Обновление № 2: Я бы, вероятно, использовал этот код для захвата элементов внутри вашего узла:
if(node != null)
{
string dc = node.SelectSingleNode("DestinationController").InnerXml;
string da = node.SelectSingleNode("DestinationAction").InnerXml;
}
Таким образом, вам не нужно сначала конвертировать в XmlElement
.