выберите XElements с xmlns - PullRequest
0 голосов
/ 11 мая 2011

Как выбрать элемент с указанным xmlns?Мне нужно выбрать элемент Включить / Фрагмент.Я пытался добавить http://schemas.microsoft.com/wix/2006/wi перед именами элементов, но это не работает.В XmlDocument была функциональность NamespaceManager, но я не вижу того же в XDocument.Так как же выбрать элемент с xmlns?

<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment/>
</Include>

Я пробовал:

IEnumerable<XElement> Fragments = d.Element("Include").Elements("Fragment");

и

const string xmlns="http://schemas.microsoft.com/wix/2006/wi/";
IEnumerable<XElement> Fragments = d.Element(xmlns+"Include").Elements(xmlns+"Fragment");

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

Вам просто нужно сделать вашу xmlns переменную XNamespace (вместо просто строки):

XNamespace xmlns = "http://schemas.microsoft.com/wix/2006/wi";

IEnumerable<XElement> Fragments = doc.Element(xmlns + "Include").Elements(xmlns + "Fragment");

тогда она должна работать просто отлично!

0 голосов
/ 20 сентября 2013
XElement yourfile = XElement.Load("yourfile.xml");
IEnumerable<XElement> address =
    from el in yourfile.Elements("Include")
    where (string)el.Attribute("XElement") !=null
    select el;

Я попытался реализовать код здесь: http://msdn.microsoft.com/en-us/library/bb675197.aspx Он также преобразует его в список. Надеюсь, это поможет

...