2013-04-03 5 views
0

У меня возникла проблема с попыткой проанализировать XML-файл, сгенерированный веб-сервисом Axis Java на C#. Файл имеет следующий формат:Как я могу проанализировать XML-файл Axis?

<ns:getAcctsDetailResponse xmlns:ns="http://paymentdata.com"> 
    <ns:return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax21="http://paymentdata.com/xsd" xsi:type="ax21:AcctsDetail"> 
    <ax21:Status>15</ax21:Status> 
    <ax21:Name>John James</ax21:Name> 
</ns:return> 
</ns:getCustomerAcctsDetailResponse> 

Я использую этот код, чтобы попытаться получить доступ к элементу необходимо, но получить следующее сообщение об ошибке:

The ':' character, hexadecimal value 0x3A, cannot be included in a name.

XDocument xDoc = XDocument.Load(xml); 
string accountName= xDoc.Root.Element("ns:return").Element("ax21:Name").Value; 

Ваша помощь будет принята с благодарностью.

+1

Вы говорите, что у вас есть проблема - это говорит о том, что у вас есть код, который не работает. Пожалуйста, покажите это и скажите, что происходит не так. –

+0

Вам необходимо обработать пространства имен (разделы 'ns:' и 'ax21:'). См. Этот ответ для примера: http://stackoverflow.com/a/2340497/745969 – Tim

ответ

0

Я вижу две проблемы:

во-первых, что XML имеет неверный формат. Открывающий тег ns:getAcctsDetailResponse не соответствует закрывающему тегу ns:getCustomerAcctsDetailResponse. Может, это опечатка?

Во-вторых, вам нужно сделать что-то особенное для пространств имен. Попробуйте что-то вроде этого:

XNamespace ns = "http://paymentdata.com"; 
XNamespace ax21 = "http://paymentdata.com/xsd"; 

XDocument xDoc = XDocument.Load(xml); 
string accountName = xDoc.Root.Element(ns + "return") 
    .Element(ax21 + "Name").Value; 
Смежные вопросы