Wybrałem tytuł tutaj, ponieważ mój problem polega na tym, że potrzebuję uzyskać węzły elementów wymienione w przykładzie. Mam następujące XML i mam problemy z wykorzystaniem LINQ do kwerendy, byłem w stanie parsować XML przed - jednak utknąłem na to godzinami i mam nadzieję, że ktoś może pomóc. Oto moje dane XML poniżej (przykładowe dane):Jak zdobyć elementy według nazwy w XML przy użyciu LINQ
<a:entry xmlns:a="http://www.w3.org/2005/Atom">
<a:id>98765</a:id>
<info>Data Catalogue</info>
<data>
<items>
<item>
<id>123456</id>
<value>Item One</value>
</item>
<item>
<id>654321</id>
<value>Item Two</value>
</item>
<items>
</data>
<items>
<item>
<id>123456</id>
<value>Item One</value>
</item>
<item>
<id>654321</id>
<value>Item Two</value>
</item>
<items>
<a:author>
<a:name>Catalogue</a:name>
</a:author>
</a:entry>
Chcę być w stanie wyodrębnić identyfikator z elementu XML tag w punktach, jednak istnieje Tag przedmioty z wpisami pozycja w ramach danych nie mam w ogóle nie chce tych węzłów - chcę, żeby root/items/id/id były wyrażone jako ścieżka. Próbowałem wszystkiego, co wiem, z LINQ, więc jeśli ktoś mógłby pomóc, rzeczy do zapamiętania, chociaż jest to przykładowe dane oparte na systemie - format nie może być zmieniony, więc nie jest to dopuszczalne rozwiązanie.
Nie mogę określić, gdzie idę źle - każde wyrażenie LINQ, które staram się nie zwracać, wydaje mi się, że przestrzeń nazw jest problemem i próbowałem to zintegrować, ale zamierzam się kręcić.
Rozwiązanie musi pracować w Silverlight i C#
Próbowałem następujące:
IEnumerable<XElement> nodes =
element.Elements().Where(e => e.Name.LocalName == "items")
Jednak to robi mi wszystkie „elementy”, w tym te, które w ramach „data” nie chcę ci.
Gdybym wykonaj następujące czynności w moim XML Widzę nazwiskami Elements wyświetlany:
XElement element = XElement.Parse(data);
foreach (XElement node in element.Elements())
{
MessageBox.Show(node.Name.LocalName);
}
Jednak kiedy mogę to zrobić nie mogę zobaczyć nazwy węzłów w punktach na wszystkich - I” ve sprawdził XElement i ma węzeł, a kiedy wypisuję powyższe nazwy, pojawia się "items" wraz z info i id!
foreach (XElement node in element.Elements("items"))
{
MessageBox.Show(node.Name.LocalName);
}
wyobraziłem go - był dodatkowy deklaracja przestrzeni nazw, które było puste - dodawanie dorozumianą nazw do mojego XML, używając do tego XNamespace i dodanie go do nazwy elementu rozwiązuje problem! – RoguePlanetoid