Create XML Nodes based on XPath?

后端 未结 12 598
囚心锁ツ
囚心锁ツ 2020-11-27 15:36

Does anyone know of an existing means of creating an XML hierarchy programatically from an XPath expression?

For example if I have an XML fragment such as:

12条回答
  •  情深已故
    2020-11-27 15:55

    Here is my version. Hope this also would help someone.

        public static void Main(string[] args)
        {
    
            XmlDocument doc = new XmlDocument();
            XmlNode rootNode = GenerateXPathXmlElements(doc, "/RootNode/FirstChild/SecondChild/ThirdChild");
    
            Console.Write(rootNode.OuterXml);
    
        }
    
        private static XmlDocument GenerateXPathXmlElements(XmlDocument xmlDocument, string xpath)
        {
            XmlNode parentNode = xmlDocument;
    
            if (xmlDocument != null && !string.IsNullOrEmpty(xpath))
            {
                string[] partsOfXPath = xpath.Split('/');
    
    
                string xPathSoFar = string.Empty;
    
                foreach (string xPathElement in partsOfXPath)
                {
                    if(string.IsNullOrEmpty(xPathElement))
                        continue;
    
                    xPathSoFar += "/" + xPathElement.Trim();
    
                    XmlNode childNode = xmlDocument.SelectSingleNode(xPathSoFar);
                    if(childNode == null)
                    {
                        childNode = xmlDocument.CreateElement(xPathElement);
                    }
    
                    parentNode.AppendChild(childNode);
    
                    parentNode = childNode;
                }
            }
    
            return xmlDocument;
        }
    

提交回复
热议问题