0

我有 400 多条这种格式的数据记录:

<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>

如何创建独立数组来存储 ows_ID、ows_LinkTitle 等的值?

foreach(activeItemData 中的 System.Xml.XmlNode 节点)

        {
            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[]”隐式转换为“string[]”。我该如何纠正?谢谢。

我做了

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

我该如何处理 ["ows_Title"] 的所有值。? 谢谢。

4

2 回答 2

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 to 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);

    }
于 2012-05-24T22:21:31.150 回答
0

简单就用

char[] resultTitle;

代替

string [] resultTitle;
于 2012-05-24T21:37:30.087 回答