认清事物的本质-简单

博客园 首页 新随笔 联系 订阅 管理
使用的例子如下: 
    public  class CarPosition
    {
        private string xmlString = @"<ROOT><car ID='车辆编号'><lng>经度</lng><lat>纬度</lat><tm>时间</tm></car></ROOT>";
        private XmlDocument xmlDoc ;
        public CarPosition()
        {
            xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xmlString);
        }

        public string ToString()
        {
            string strRet = "";
            XmlNodeList xmlNodeList= xmlDoc.ChildNodes;
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                strRet = strRet + xmlNode.InnerText;
            }
            return strRet;
        }
    }
为了方便看出XML文档的结构,再粘一下:
<ROOT>
	<car ID=’车辆编号’>
		<lng>经度</lng>
		<lat>纬度</lat>
		<tm>时间</tm>
	</car>
</ROOT>
调用ToString方法,结果如下:

image

将ToString方法改成如下:

        public override  string ToString()
        {
            string strRet = "";
            XmlNodeList xmlNodeList= xmlDoc.ChildNodes;
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                strRet = strRet + xmlNode.Name ;
            }
            return strRet;
        }

结果如下:

image

再改成如下:

        public override  string ToString()
        {
            string strRet = "";
            XmlNodeList xmlNodeList= xmlDoc.ChildNodes;
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                    strRet = strRet + xmlNode.InnerXml ;
            }
            return strRet;
        }

image

再改成如下:

        public override  string ToString()
        {
            string strRet = "";
            XmlNodeList xmlNodeList= xmlDoc.ChildNodes;
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                    strRet = strRet + xmlNode.OuterXml ;
            }
            return strRet;
        }

image

为了得到ROOT下面的子节点,改成如下:
        public override  string ToString()
        {
            string strRet = "";
            XmlNodeList xmlNodeList= xmlDoc.ChildNodes;
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                XmlNode xmlN = xmlNode.FirstChild;    
                strRet = strRet + xmlN .OuterXml  ;
            }
            return strRet;
        }
image 

 

能够得到节点了,下面得到节点中指定元素的属性或值。

改成

        public override  string ToString()
        {
            string strRet = "";
            XmlNodeList xmlNodeList= xmlDoc.ChildNodes;
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                XmlNode xmlN = xmlNode.FirstChild;
                XmlNode xmlNo = xmlN.FirstChild;
                strRet = strRet + xmlNo .OuterXml  ;
            }
            return strRet;
        }

得到的结果是

image

改成

        public override  string ToString()
        {
            string strRet = "";
            XmlNodeList xmlNodeList= xmlDoc.ChildNodes;
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                XmlNode xmlN = xmlNode.FirstChild;
                XmlNode xmlNo = xmlN.FirstChild;
                strRet = strRet + xmlNo .InnerXml   ;
            }
            return strRet;
        }
得到的结果是

image

改成

        public override string ToString()
        {
            string strRet = "";
            XmlNodeList xmlNodeList = xmlDoc.ChildNodes;
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                XmlNode xmlN = xmlNode.FirstChild;
                strRet = strRet + xmlN.Attributes.Item (0).InnerText ;
            }
            return strRet;
        }

image

总结一下:

可以看出,Text是对标记里面的内容的提取,而Xml则是对标记和标记内容的提取,其中innerXml不包括当前节点的提取,而outerXml则将自身包括在内。

image

posted on 2009-09-22 17:35  萧冲  阅读(1012)  评论(0编辑  收藏  举报