2012-05-24 2 views
0

Я имею 400+ записи данных в этом формате внутри:C# Анализировать XML в массивы

<rs:data> 
    <z:row ows_ID='360' ows_LinkTitle='GEI Survey data to Sharepoint' ows_Project_x0020_Priority='0' ows_AssignedTo='615;#Jeremy, Ron' ows_Status='In Progress' ows_Priority='(2) Normal' ows_DueDate='2012-04-27 00:00:00' ows_PercentComplete='0.700000000000000' ows_Modified='2012-04-30 10:44:15' ows_Alignment='TSS Delivery Mgmt' ows_SME='44;#Lewis, Clark' /> 

    <z:row ows_ID='378' ows_LinkTitle='Create back end and environment to support User demographic reporting' ows_Project_x0020_Priority='0' ows_AssignedTo='615;#Sam, Johns' ows_Status='In Progress' ows_Priority='(2) Normal' ows_DueDate='2012-05-11 00:00:00' ows_PercentComplete='0.800000000000000' ows_Modified='2012-05-09 13:50:17' ows_Alignment='Team Internal' ows_SME='7;#CORP\sscer;#9;#CORP\vreer' /> 

    <z:row ows_ID='249' ows_LinkTitle='Training Material to Muti Media' ows_AssignedTo='620;#Jenkins, Kristen' ows_Status='Not Started' ows_Priority='(2) Normal' ows_DueDate='2012-08-10 00:00:00' ows_PercentComplete='0' ows_Modified='2012-05-16 11:20:29' ows_Alignment='Diver Support' ows_SME='1;#CORP\vsswer;#7;#CORP\adder' /> 

</rs:data> 

как создать indivisual массив для хранения значений ows_ID, ows_LinkTitle annd так далее?

Еогеасп (System.Xml.XmlNode узел в activeItemData)

 { 
      if (node.Name == "rs:data") 
      { 
       for (int i = 0; i < node.ChildNodes.Count; i++) 
       { 
        if (node.ChildNodes[i].Name == "z:row") 
        { 
         string [] resultTitle; 
    resultTitle = (node.ChildNodes[i].Attributes["ows_Title"].Value).ToArray(); 
         Console.ReadLine(); 
        } 
       } 
      } 
     } 

Его ошибка метание Ошибка Не удается неявно преобразовать тип 'обугливается []' на 'строку []' в resultTitle. Как это исправить? Благодарю.

Я сделал

char[] resultTitle; 
resultTitle = (node.ChildNodes[i].Attributes ["ows_Title"].Value).ToArray(); 
string s = new string(resultTitle); 
Console.ReadLine(); 

как я делаю это для всех значений [ "ows_Title"]. ? Благодарю.

+0

Мы понятия не имеем, что '' rs' или z' среднее (кроме того некоторые пространства имен XML). Каков ваш настоящий xml и что именно вы хотите выбраться из него? –

+0

L.B. Настоящий xml - это данные, возвращаемые из веб-ссылки в список SharePoint. Я думаю о получении массивов всех значений атрибутов, таких как [ows_ID], [ows_Title] и т. Д. В индивидуальных таблицах, чтобы я мог передавать их как параметры для вставки этих значений в таблицу SQL. Если вы хотите взглянуть на то, как это выглядит: http://stackoverflow.com/questions/10739535/insert-xml-attribute-values-in-a-sql-table – Nemo

+0

Нет, спасибо, я не могу сказать, что я очень заинтересованы в том, как это выглядит, увидев вашу проблему: 'char []' :) –

ответ

1

Этот код

char[] resultTitle; 
resultTitle = (node.ChildNodes[i].Attributes ["ows_Title"].Value).ToArray(); 
string s = new string(resultTitle); 
Console.ReadLine(); 

принимает значение строки превращается в массив символов. ).ToArray(), а затем сразу преобразует массив символов обратно в строку.

Это то же самое, без дополнительного выделения памяти

string s = node.ChildNodes[i].Attributes ["ows_Title"].Value; 

Если бы я был вами, однако я бы просто использовать LINQ для XML. Я также хочу, чтобы в конечном итоге с List<string>

XNamespace z = "#RowsetSchema"; 
List<string> list = (from row in xdoc.Descendants(z + "row") 
        select (string)row.Attribute("ows_LinkTitle") 
        ).ToList(); 

Полный образец

static void Main(string[] args) 
    { 
     string xstring = @"<xml xmlns:rs='urn:schemas-microsoft-com:rowset' 
         xmlns:z='#RowsetSchema'> 
          <rs:data> 
           <z:row ows_ID='360' ows_LinkTitle='GEI Survey data to Sharepoint' ows_Project_x0020_Priority='0' ows_AssignedTo='615;#Jeremy, Ron' ows_Status='In Progress' ows_Priority='(2) Normal' ows_DueDate='2012-04-27 00:00:00' ows_PercentComplete='0.700000000000000' ows_Modified='2012-04-30 10:44:15' ows_Alignment='TSS Delivery Mgmt' ows_SME='44;#Lewis, Clark' /> 
           <z:row ows_ID='378' ows_LinkTitle='Create back end and environment to support User demographic reporting' ows_Project_x0020_Priority='0' ows_AssignedTo='615;#Sam, Johns' ows_Status='In Progress' ows_Priority='(2) Normal' ows_DueDate='2012-05-11 00:00:00' ows_PercentComplete='0.800000000000000' ows_Modified='2012-05-09 13:50:17' ows_Alignment='Team Internal' ows_SME='7;#CORP\sscer;#9;#CORP\vreer' /> 
           <z:row ows_ID='249' ows_LinkTitle='Training Material to Muti Media' ows_AssignedTo='620;#Jenkins, Kristen' ows_Status='Not Started' ows_Priority='(2) Normal' ows_DueDate='2012-08-10 00:00:00' ows_PercentComplete='0' ows_Modified='2012-05-16 11:20:29' ows_Alignment='Diver Support' ows_SME='1;#CORP\vsswer;#7;#CORP\adder' /> 
          </rs:data> 
          </xml>"; 



     XDocument xdoc = XDocument.Parse(xstring); // there are other ways to construct your xdoc 
     XNamespace z = "#RowsetSchema"; 
     List<string> list = (from row in xdoc.Descendants(z + "row") 
          select (string)row.Attribute("ows_LinkTitle") 
          ).ToList(); 

     foreach (var item in list) 
      Console.WriteLine(item); 

    } 
+0

Спасибо, Конрад Фрикс, за вашу помощь. LINQ to XML - это действительно замечательная вещь. – Nemo

0

Простой просто использовать

char[] resultTitle; 

вместо

string [] resultTitle; 
+0

Спасибо Sachin. Пожалуйста, ознакомьтесь с моими изменениями ... – Nemo

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