Я изо всех сил пытаюсь получить информацию из веб-службы REST. Я могу подключиться, но когда я пытаюсь проанализировать узел, всегда имеет значение null, даже с пространством имен:Получить информацию от REST API
Это XML, который я обрабатываю для синтаксического анализа, который я могу успешно загрузить в XML-документ.
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#" xmlns:ext="http://musicbrainz.org/ns/ext#-2.0" created="2014-01-26T17:20:00.207Z">
<artist-list count="1" offset="0">
<artist id="65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab" type="Group" ext:score="100">
<name>Metallica</name>
<sort-name>Metallica</sort-name>
<country>US</country>
<area id="489ce91b-6658-3307-9877-795b68554c98">
<name>United States</name>
<sort-name>United States</sort-name>
</area>
<begin-area id="1f40c6e1-47ba-4e35-996f-fe6ee5840e62">
<name>Los Angeles</name>
<sort-name>Los Angeles</sort-name>
</begin-area>
<life-span>
<begin>1981-10</begin>
<ended>false</ended>
</life-span>
<alias-list>
<alias sort-name="メタリカ">メタリカ</alias>
<alias locale="ko_KR" sort-name="메탈리카" primary="primary">메탈리카</alias>
<alias sort-name="Metalica">Metalica</alias>
</alias-list>
<tag-list>
<tag count="1">
<name>américain</name>
</tag>
<tag count="1">
<name>usa</name>
</tag>
<tag count="2">
<name>speed metal</name>
</tag>
<tag count="1">
<name>douchebag metal</name>
</tag>
<tag count="1">
<name>american thrash metal</name>
</tag>
<tag count="3">
<name>rock</name>
</tag>
<tag count="1">
<name>90s</name>
</tag>
<tag count="1">
<name>80s</name>
</tag>
<tag count="1">
<name>seen live</name>
</tag>
<tag count="1">
<name>rock and indie</name>
</tag>
<tag count="10">
<name>thrash metal</name>
</tag>
<tag count="6">
<name>heavy metal</name>
</tag>
<tag count="1">
<name>thrash</name>
</tag>
<tag count="10">
<name>metal</name>
</tag>
<tag count="1">
<name>classic thrash metal</name>
</tag>
<tag count="1">
<name>classic metal</name>
</tag>
<tag count="1">
<name>los angeles</name>
</tag>
<tag count="1">
<name>california</name>
</tag>
<tag count="1">
<name>bay area</name>
</tag>
<tag count="1">
<name>80s metal</name>
</tag>
<tag count="1">
<name>90s metal</name>
</tag>
<tag count="1">
<name>80s thrash metal</name>
</tag>
<tag count="6">
<name>american</name>
</tag>
<tag count="5">
<name>hard rock</name>
</tag>
<tag count="1">
<name>band</name>
</tag>
</tag-list>
</artist>
</artist-list>
</metadata>
Это то, что я до сих пор, но имя всегда нуль
XmlDocument doc = new XmlDocument();
XPathNavigator nav = doc.CreateNavigator();
XmlNamespaceManager man = new XmlNamespaceManager(doc.NameTable);
man.AddNamespace("ext", "http://musicbrainz.org/ns/ext#-2.0");
doc.LoadXml(textXML);
XPathNavigator result = nav.SelectSingleNode("/ext:name", man);
Console.WriteLine(result);
// Wait for response
Console.WriteLine("If we get here it is blank");
Console.ReadLine();
EDIT: Благодаря Гамлету я решил эту проблему с помощью Linq для XML, который имеет гораздо более хороший синтаксис. Для тех, кто заинтересован:
// Define Namespaces and load XML
XNamespace def = "http://musicbrainz.org/ns/mmd-2.0#";
XNamespace ext = "http://musicbrainz.org/ns/ext#-2.0";
XElement root = XElement.Parse(textXML);
// Search for required Element
var elements =
root
.Descendants(def + "artist");
// Print Results
foreach (var element in elements)
{
Console.Write(element.Value);
}
Вы определяете пространство имен с префиксом но пространства имен в XML без префикса. –
Это XML. Он создается по этой ссылке: http://musicbrainz.org/ws/2/artist?query=%22metallica%22 –