2013-09-13 2 views
0

Я новичок в xml, C#. Я следую этому руководству: http://www.dotnetcurry.com/ShowArticle.aspx?ID=564Чтение XML с использованием формата ab: tag с помощью C#

Но мой xml-файл немного отличается. XML, что я хочу прочитать в моей C# код это: http://api.nextag.com/buyer/synd.jsp?search=ipod&ver=15&token=AQB7dB $ kB8ULvbGT & PID = 1807

код Я пытаюсь прочитать этот XML является:


using System; 

using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 


namespace ConsoleApplication1 
{ 
class Program 
{ 
static void Main(string[] args) 
{ 

XElement xelement = XElement.Load("http://api.nextag.com/buyer/synd.jsp?search=ipod&ver=15&token=AQB7dB$kB8ULvbGT&pid=1807"); 
XNamespace nxtg = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2011-01-11T08:31:30"; 

IEnumerable<XElement> employees = xelement.Elements(); 
// Read the entire XML 
foreach (var employee in employees) 
{ 
//Console.WriteLine(employee); 
//Console.WriteLine(employee.Value); 

if (employee.Element(nxtg + "search-category") == null) 
continue; 
else 
Console.WriteLine(employee.Element(nxtg + "search-category").Value); 
//Console.WriteLine(employee.Element("EmpId").Value); 
} 

Но нет удачи. Любой может мне помочь.

ответ

0

xelement.Elements() вернет прямые дети из корневого элемента. В вашем случае это будут элементы nxtg:publisher, nxtg:search-query, nxtg:search-category и т. Д. Таким образом, nxtg:search-category является прямым потомком корневого элемента, он также будет выбран как employee. Вот почему вы не можете найти его у детей employee. Вы должны сделать следующее:

// keep in mind, you have incorrect namespace value 
XNamespace nxtg = "http://namespace.nextag.com/business-objects"; 
var searchCategory = xelement.Element(nxtg + "search-category"); 
var node = searchCategory.Element(nxtg + "node"); 
var displayName = (string)node.Element(nxtg + "display-name"); 
var value = (int)node.Element(nxtg + "value"); 
Смежные вопросы