SelectNodes中的XPath
//從當前節點的兒子節點中選擇名稱為 item 的節點。
SelectNodes("item")//從根節點的兒子節點中選擇名稱為 item 的節點。
SelectNodes("/item")// 從任意位置的節點上選擇名稱為 item 的節點。要重點突出這個任意位置,它不受當前節點的影響,也就是說假如當前節點是在第 100 層(有點夸張),也可以選擇第一層的名稱為 item 的節點。
SelectNodes("//item")// 在 SelectNodes("//item") 的基礎上,增加了一個限制,就是要求擁有 name 屬性。
SelectNodes("//item[@name]")// 在 SelectNodes("//item[@name]") 的基礎上,增加了一個限制,就是要求 name 屬性值為 111。注意語法中有引號;如果沒有引號,則表示是數字類型,對于數字類型可以使用大于號、小于號等,比如:SelectNodes("//item[@v>333]")。
SelectNodes("//item[@name='111']")//*******進階版**************
// 模糊匹配
// 使用contains, 表示label屬性內容包含caseSuite變量內容
string xpathStr = string.Format(@"//TestSuite[contains(@label,'{0}')]", caseSuite);
XmlNodeList removeSuiteInfoList = suiteListNode.SelectNodes(xpathStr);// 可以邏輯運算
/Root//Person[contains(Blog,'cn') and contains(@ID,'01')]
SelectNodes
如果xml里沒有“xxx”節點,nodeList.Count會返回0,而不是null或error
XmlDocument xmlDocument = new XmlDocument();xmlDocument.Load(@"test.xml");XmlNodeList nodeList = xmlDocument.SelectNodes(@"//UnitTest/XXX");Console.WriteLine(nodeList.Count.ToString());Console.ReadKey();
?
xml文件創建與保存
XmlDocument planDoc = new XmlDocument();planDoc.AppendChild(planDoc.CreateXmlDeclaration("1.0", "UTF-8", null));//創建根目錄
XmlElement planRoot = planDoc.CreateElement(PlanSuiteList);//保存至PlanFullName
planDoc.Save(PlanFullName);
?
創建節點以及添加屬性
//創建節點
XmlElement memberTestSuite = planDoc.CreateElement(TestSuite);
//設置屬性
memberTestSuite.SetAttribute(EachFlowLabel, label);//創建子節點
XmlElement childName = planDoc.CreateElement(EachFlowName);
childName.InnerText = suiteName;//子節點添加memberTestSuite.AppendChild(childName);//添加到根節點
planRoot.AppendChild(memberTestSuite);//根節點添加到xml文件planDoc.AppendChild(planRoot);// xmlnode 添加節點
XmlNode projectInfoNode = projectInfoDocument.SelectSingleNode(@"//ProjectInfo");
XmlElement newNodeElement = projectInfoDocument.CreateElement(nodeName);
newNodeElement.InnerText= testerNode.InnerText;projectInfoNode.AppendChild(newNodeElement);
?
刪除節點
//刪除子節點
XmlNode suiteListNode = planDocument.SelectSingleNode(@"//PlanSuiteList");suiteListNode.RemoveChild(suiteNode);
?
參考:https://blog.csdn.net/nnn_net/article/details/69584358