2015-06-30 4 views
1

Я получаю XML-запрос от OAI-PMH, который содержит токен возобновления, чтобы получить следующий набор записей. Как получить значение маркеров возобновления и другие его атрибуты, такие как completeListSize т.д.Как получить значение resumptiontoken из заданного xml

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="static/style.xsl"?><OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"><responseDate>2015-06-24T16:45:25Z</responseDate> 
<request verb="ListRecords" metadataPrefix="uketd_dc">http://publications.iadb.org/oai/request</request> 
<ListRecords> 
    <record> 
     <header> 
      <identifier>oai:publications.iadb.org:11319/195</identifier> 
      <datestamp>2015-06-12T23:02:48Z</datestamp> 
      <setSpec>com_123456789_1</setSpec> 
      <setSpec>col_123456789_3</setSpec> 
     </header> 
     <metadata></metadata> 
    </record> 
<resumptionToken completeListSize="6305" cursor="0">MToxMDB8Mjp8Mzp8NDp8NTp1a2V0ZF9kYw==</resumptionToken> 
</ListRecords> 

Я попытался код ниже

XDocument root= XDocument .Load("http://publications.iadb.org/oai/request?verb=ListRecords&metadataPrefix=uketd_dc"); 
     var tokenValue= root.Element("resumptionToken").Value; 

Его возвращение ссылки на объект error.Please помощи.

ответ

1

Element возвращает неотложный дочерний элемент. Из контекста вашего документа единственным доступным для вас элементом является OAI-PMH - вот почему вы получаете исключение с нулевой ссылкой.

Кроме того, ваш целевой элемент имеет пространство имен как определено декларации пространства имен по умолчанию (xmlns="...") в корневой OAI-PMH элемента.

Вы можете использовать Descendants найти любой элемент в документе с вашим требуемым именем, поэтому этот короткий код должен работать:

XNamespace ns = "http://www.openarchives.org/OAI/2.0/"; 
var tokenValue = (string)root.Descendants(ns + "resumptionToken").Single(); 
+0

Спасибо это работает .. –

Смежные вопросы