我可以';导入&x27;将该值转换为XML结构并对其进行解析?C#

我可以';导入&x27;将该值转换为XML结构并对其进行解析?C#,c#,xml,sharepoint,C#,Xml,Sharepoint,我有一个sharepoint服务器,我正在以编程方式使用它。我正在使用的应用程序之一是。我查询了客户名单: if (cList.Title.ToLower().Equals("service requests")) { textBox1.Text += "> Service Requests" + Environment.NewLine; foreach (SPListItem item in cList.Items) { textBox1.Text

我有一个sharepoint服务器,我正在以编程方式使用它。我正在使用的应用程序之一是。我查询了客户名单:

if (cList.Title.ToLower().Equals("service requests"))
{
    textBox1.Text += "> Service Requests" + Environment.NewLine;
    foreach (SPListItem item in cList.Items)
    {
        textBox1.Text += string.Format(">> {0}{1}", item.Title, Environment.NewLine);
    }
}
中的一个属性是XML。以下是其中一项的价值:

<z:row
  xmlns:z='#RowsetSchema' ows_ID='1' ows_ContentTypeId='0x0106006324F8B638865542BE98AD18210EB6F4'
  ows_ContentType='Contact' ows_Title='Mouse' ows_Modified='2009-08-12 14:53:50' ows_Created='2009-08-12 14:53:50'
  ows_Author='1073741823;#System Account' ows_Editor='1073741823;#System Account'
  ows_owshiddenversion='1' ows_WorkflowVersion='1' ows__UIVersion='512' ows__UIVersionString='1.0'
  ows_Attachments='0' ows__ModerationStatus='0' ows_LinkTitleNoMenu='Mouse' ows_LinkTitle='Mouse'
  ows_SelectTitle='1' ows_Order='100.000000000000' ows_GUID='{37A91B6B-B645-446A-8E8D-DA8250635DE1}'
  ows_FileRef='1;#Lists/customersList/1_.000' ows_FileDirRef='1;#Lists/customersList'
  ows_Last_x0020_Modified='1;#2009-08-12 14:53:50' ows_Created_x0020_Date='1;#2009-08-12 14:53:50'
  ows_FSObjType='1;#0' ows_PermMask='0x7fffffffffffffff' ows_FileLeafRef='1;#1_.000'
  ows_UniqueId='1;#{28A223E0-100D-49A6-99DA-7947CFC38B18}' ows_ProgId='1;#'
  ows_ScopeId='1;#{79BF21FE-0B9A-43B1-9077-C071B61F5588}' ows__EditMenuTableStart='1_.000'
  ows__EditMenuTableEnd='1' ows_LinkFilenameNoMenu='1_.000' ows_LinkFilename='1_.000'
  ows_ServerUrl='/Lists/customersList/1_.000' ows_EncodedAbsUrl='http://spvm:3333/Lists/customersList/1_.000'
  ows_BaseName='1_' ows_MetaInfo='1;#' ows__Level='1' ows__IsCurrentVersion='1' ows_FirstName='Mickey'
  ows_FullName='Mickey Mouse' ows_Comments='&lt;div&gt;&lt;/div&gt;' ows_ServerRedirected='0'
/>

我是否可以创建一个XMLnode或其他类型的XML对象,以便能够轻松地解析它并提取某些值(这些确定性现在还未知,因为我现在正在测试)


非常感谢

我想出了这段代码,看起来还可以。由于我的XML/C知识有限,我认为有一种更简单的方法:

public void DoParse(string value, string elementname)
{
    var split = value.Split((char)39);

    XmlDocument xDoc = new XmlDocument();
    XmlElement xRoot = xDoc.CreateElement(elementname);
    xDoc.AppendChild(xRoot);

    for (var i = 0; i < split.Length - 1; i += 2)
    {
        var attribName = split[i].Replace("=", "").Trim();
        var xAttrib = xDoc.CreateAttribute(attribName);
        xAttrib.Value = split[i + 1];
        xRoot.Attributes.Append(xAttrib);
    }
    xDoc.Save(string.Format("c:\\xmlout_{0}.xml", elementname));
}
public void DoParse(字符串值、字符串元素名称)
{
var split=value.split((char)39);
XmlDocument xDoc=新的XmlDocument();
xmlementxroot=xDoc.CreateElement(elementname);
xDoc.AppendChild(xRoot);
对于(变量i=0;i
给我:


有人有意见吗?谢谢。

我想出了这段代码,看起来还可以。由于我的XML/C知识有限,我认为有一种更简单的方法:

public void DoParse(string value, string elementname)
{
    var split = value.Split((char)39);

    XmlDocument xDoc = new XmlDocument();
    XmlElement xRoot = xDoc.CreateElement(elementname);
    xDoc.AppendChild(xRoot);

    for (var i = 0; i < split.Length - 1; i += 2)
    {
        var attribName = split[i].Replace("=", "").Trim();
        var xAttrib = xDoc.CreateAttribute(attribName);
        xAttrib.Value = split[i + 1];
        xRoot.Attributes.Append(xAttrib);
    }
    xDoc.Save(string.Format("c:\\xmlout_{0}.xml", elementname));
}
public void DoParse(字符串值、字符串元素名称)
{
var split=value.split((char)39);
XmlDocument xDoc=新的XmlDocument();
xmlementxroot=xDoc.CreateElement(elementname);
xDoc.AppendChild(xRoot);
对于(变量i=0;i
给我:


有人有意见吗?谢谢。

如果XML有效,您可以像这样使用XmlDocument.LoadXMl:

XmlDocument doc = new XmlDocument();
doc.LoadXml(validxmlstring);

如果XML有效,则可以使用XmlDocument.LoadXMl,如下所示:

XmlDocument doc = new XmlDocument();
doc.LoadXml(validxmlstring);

您可以做到这一点,它应该可以正常工作(尽管我会使用XML文档方法,或者更好的LINQ)。您还可以在中找到LINQ扩展

然而,我想知道为什么你会用这种方式而不是使用属性?它使用起来简单得多,而且非常清晰。例如:

var title = listItem["Title"];       // Returns title of item
var desc = listItem["Description"];  // Returns value of description field
唯一的陷阱是列表中包含一个字段,其内部名称等于另一个字段的显示名称。这将始终首先返回内部名称为的字段值


我只是想知道您是否需要走XML路线。

您可以做到这一点,它应该可以很好地工作(尽管我会使用XML文档方法,或者更好的LINQ)。您还可以在中找到LINQ扩展

然而,我想知道为什么你会用这种方式而不是使用属性?它使用起来简单得多,而且非常清晰。例如:

var title = listItem["Title"];       // Returns title of item
var desc = listItem["Description"];  // Returns value of description field
唯一的陷阱是列表中包含一个字段,其内部名称等于另一个字段的显示名称。这将始终首先返回内部名称为的字段值


只是好奇,如果你有需要去XML路由。

你在这里有效地编写你自己的XML解析器,只是你做得不对(因为XML可以变得更复杂——考虑字符实体、注释等)。不要这样做——使用其他分析器中建议的现有解析器。谢谢帕维尔,我会尝试这些。你在这里有效地编写自己的XML解析器,只是你做得不对(因为XML可以变得更复杂——考虑字符实体、注释等)。只是不要这么做——按照其他回复中的建议使用现有的解析器。谢谢pavel,我会尝试一下。不,我不一定要使用XML。我只是觉得这是使用原始数据的最简单的方法。哦,我刚刚想起了为什么XML:在我从服务器获取的列表中,我要使用的数据在列表的XML属性中。我可以直接从列表中提取一些信息,但大部分都在XML字段中。不,我不一定要使用XML。我只是觉得这是使用原始数据的最简单的方法。哦,我刚刚想起了为什么XML:在我从服务器获取的列表中,我要使用的数据在列表的XML属性中。我可以直接从列表中提取一些信息,但大部分都在XML字段中。Hrm,我一定忽略了这一点。我试图使用XPath,但没有成功。可能,正如我提到的,由于我缺乏在.NET中进行XML解析的经验。谢谢人力资源经理,我一定是忽略了这一点。我试图使用XPath,但没有成功。可能,正如我提到的,由于我缺乏在.NET中进行XML解析的经验。谢谢