xml文件通過Xpath獲取節點的值

介紹xml文件通過Xpath獲取節點的值

調用示例:

 object str = CommonHelper.GetNodeInnerTextFromNodeByXpath(node.ParentNode, "/BODY/ZSXM");

 

通用代碼如下:

/// <summary>
        /// 根據Xpath獲取CDATA中的值
        /// </summary>
        /// <param name="strXmlText">xml字符串</param>
        /// <param name="strXpath">Xpath表達式</param>
        /// <returns></returns>
        public static string GetCDataInnerText(string strXmlText, string strXpath)
        {
            string strResult = string.Empty;
            XmlDocument doc = new XmlDocument
            {
                InnerXml = strXmlText
            };
            XmlNode nDataNode = doc.SelectSingleNode(strXpath);
            if (!Equals(nDataNode, null))
            {
                if (nDataNode.HasChildNodes)
                {
                    if (nDataNode.FirstChild is XmlCDataSection nDataSection)
                    {
                        strResult = nDataSection.InnerText;
                    }
                }
            }
            return strResult;
        }
 

 

    /// <summary>
        /// 根據Xpath獲取CDATA中的值
        /// </summary>
        /// <param name="strXmlText">xml字符串</param>
        /// <param name="strCdataXpath">查找CDATA</param>
        /// <param name="strNodeXpath">查找NODE</param>
        /// <returns></returns>
        public static string GetNodeFromCDataInnerText(string strXmlText, string strCdataXpath, string strNodeXpath)
        {
            try
            {
                string nodeValue = string.Empty;
                string strResult = GetCDataInnerText(strXmlText, strCdataXpath);
                if (!string.IsNullOrEmpty(strResult))
                {
                    XmlDocument doc = new XmlDocument
                    {
                        InnerXml = strResult
                    };
                    XmlNode nDataNode = doc.SelectSingleNode(strNodeXpath);
                    if (!Equals(nDataNode, null))
                    {
                        nodeValue = nDataNode.InnerXml;
                    }
                }
                return nodeValue;
            }
            catch
            {
                return string.Empty;
            }
        }

        /// <summary>
        /// 獲取節點的值
        /// </summary>
        /// <param name="strXmlText">The string XML text.</param>
        /// <param name="xpath">The xpath.</param>
        /// <returns></returns>
        public static string GetNodeInnerTextByXpath(string strXmlText, string xpath)
        {
            string strReslt = string.Empty;
            if (!string.IsNullOrEmpty(strXmlText))
            {
                XmlDocument doc = new XmlDocument
                {
                    InnerXml = strXmlText
                };
                XmlNode node = doc.SelectSingleNode(xpath);
                if (!Equals(node, null))
                {
                    strReslt = node.InnerText;
                }
            }
            return strReslt;
        }

        /// <summary>
        /// 獲取節點的值
        /// </summary>
        /// <param name="strXmlText">The string XML text.</param>
        /// <param name="xpath">The xpath.</param>
        /// <returns></returns>
        public static string GetNodeOuterXmlByXpath(string strXmlText, string xpath)
        {
            string strReslt = string.Empty;
            if (!string.IsNullOrEmpty(strXmlText))
            {
                XmlDocument doc = new XmlDocument
                {
                    InnerXml = strXmlText
                };
                XmlNode node = doc.SelectSingleNode(xpath);
                if (!Equals(node, null))
                {
                    strReslt = node.InnerText;
                }
            }
            return strReslt;
        }

        /// <summary>
        /// 獲取節點的值
        /// </summary>
        /// <param name="strXmlText">The string XML text.</param>
        /// <param name="xpath">The xpath.</param>
        /// <returns></returns>
        public static XmlNode GetNodeByXpath(string strXmlText, string xpath)
        {
            if (!string.IsNullOrEmpty(strXmlText))
            {
                XmlDocument doc = new XmlDocument
                {
                    InnerXml = strXmlText
                };
                XmlNode node = doc.SelectSingleNode(xpath);
                return node;
            }
            return null;
        }

         /// <summary>
        /// 獲取節點的值
        /// </summary>
        /// <param name="nodeVNode">The node v node.</param>
        /// <param name="xpath">The xpath.</param>
        /// <returns></returns>
        public static object GetNodeInnerTextFromNodeByXpath(XmlNode nodeVNode, string xpath)
        {
            object strReslt = string.Empty;
            if (!Equals(nodeVNode, null))
            {
                XmlDocument doc = new XmlDocument
                {
                    InnerXml = nodeVNode.OuterXml
                };
                XmlNode node = doc.SelectSingleNode(xpath);
                if (!Equals(node, null))
                {
                    strReslt = node.InnerText;
                }
            }
            return strReslt;
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章