Search a XMLNODE

本文关键字:XMLNODE Search | 更新日期: 2023-09-27 18:30:27

我对ASP .NET中的XML处理非常陌生。

我正在通过 Web 服务参考在 asp .net 站点中使用 sharepoint 列表的数据。

以下是我用于使用数据的代码。

TestSharePointSite.Lists lists = new global::Test.TestSharePointSite.Lists();
lists.Url = "http://intranetsharepoint/global/test/_vti_bin/Lists.asmx";
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
XmlNode n = lists.GetListItems("TestList", null, null, null, null, null, null);
for (int i = 0; i < n.ChildNodes[1].ChildNodes.Count; i++)
{
    if (n.ChildNodes[1].ChildNodes[i].Attributes != null)
    {
        foreach (XmlAttribute a in n.ChildNodes[1].ChildNodes[i].Attributes)
        {
            Response.Write("<br> .. " + a.Name + " .. " + a.InnerText);
        }
    }
}

以下是我从上述代码中输出的输出

.. ows_Content_x0020_Description .. string;#Fast Track
.. ows_Dev_x002e__x0020_Location .. 32;#Numatics Actuator Tennessee
.. ows_Strategic_x0020_Bucket0 .. 4;#Minor Revision
--------------------- Other Attributes ----------------
.. ows_Engineer .. 584;#Tilmos, Wayne [INDAUTO/ASCONUM/NOVI]
.. ows__ModerationStatus .. 0   

现在我想搜索一个特定的 XML 元素''XML 节点。我想要一个节点,其中内容描述(这里带有名称 ows_Content_x0020_Description )包含Fast Track

我已经经历了以下关于 SO 的问题,但无法在我的代码中实现解决方案。 我也尝试在谷歌上搜索,但无法做到。 提前感谢。

按属性值选择 XML 节点

查找字符串中包含属性值的 XmlNode

Search a XMLNODE

您应该使用 XPath 表达式进行测试。我假设变量列表是一个 XmlDocument。

XmlNode node = 
  list.SelectSingleNode("//root/ows_Content_x0020_Description[contains(.,'Fast Track')]");

请参阅 http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.selectsinglenode.aspx

编辑:使用 XPathTester 测试 XPath 表达式

   XmlDocument dddd = new XmlDocument();
            dddd.Load(@"D:'Development'xxxx'xxxxx.xml");
            XmlNode xnode = dddd.DocumentElement;
            for (int i = 0; i < xnode.ChildNodes.Count; i++)
            { 
               if(xnode.ChildNodes[i].Attributes !=null)
                   foreach (XmlAttribute a in xnode.ChildNodes[i].Attributes)
                   {
                       if (a.Name == "ows_Content_x0020_Description")
                       {
                           string nameddd = a.InnerText;
                       }
                   }
            }