2014-11-18 3 views
0

Я использую приложение для покупки в своем приложении. Вот Квитанция я был после успешной покупки:XML Анализ из строки?

<?xml version="1.0"?> 
    <Receipt Version="1.0" CertificateId="xxxyyy" xmlns="http://schemas.microsoft.com/windows/2012/store/receipt"> 
     <ProductReceipt PurchasePrice="$9.99" PurchaseDate="2014-11-18T08:04:37.572Z" ExpirationDate="9999-12-31T00:00:00Z" ProductId="product_id" ProductType="Consumable" AppId="xxx-yyy" Id="xxx-yyy" PublisherDeviceId="xxx-yyy" PublisherUserId="" MicrosoftProductId="xxx-yyy" MicrosoftAppId="xxx-yyy" /> 
    </Receipt> 

// хранится как строка «получения»

мне нужно, чтобы отобразить его пользователю, но я получаю сообщение об ошибке. Вот мой код:

var xDoc = XDocument.Parse(receipt).Root.Element("ProductReceipt"); //receipt id the string 
string Price = xDoc.Attribute("PurchasePrice").Value; 

«xDoc» всегда имеет значение null. Так как это null, я получил исключение по цене.

Ссылка на объект не установлена ​​в экземпляр объекта.

Пожалуйста, помогите мне, как получить «PurchasePrice» из этой строки xml!

+0

вам не хватает пространства имен – rene

+0

@rene Что это? Пожалуйста, скажите мне –

+0

. Посмотрите на это: http://stackoverflow.com/a/2998837/578411 – rene

ответ

0

Вы должны будете использовать namespace:

XNamespace ns = "http://schemas.microsoft.com/windows/2012/store/receipt"; 
var xDoc = XDocument 
       .Parse(receipt) 
       .Root 
       .Element(ns + "ProductReceipt"); //Use namespace ProductReceipt is in 

Помните, что если ваш XML содержит xmlns разметку, узла и его дети являются частью этого пространства имен. Это делается для предотвращения столкновений имен элементов.

Статья Википедии является хорошей отправной точкой, если вы хотите узнать больше о том, что: http://en.wikipedia.org/wiki/XML_namespace

+0

Спасибо. Это сработало. –

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