使用的例子如下:
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方法,结果如下:
将ToString方法改成如下:
public override string ToString() { string strRet = ""; XmlNodeList xmlNodeList= xmlDoc.ChildNodes; foreach (XmlNode xmlNode in xmlNodeList) { strRet = strRet + xmlNode.Name ; } return strRet; }
结果如下:
再改成如下:
public override string ToString() { string strRet = ""; XmlNodeList xmlNodeList= xmlDoc.ChildNodes; foreach (XmlNode xmlNode in xmlNodeList) { strRet = strRet + xmlNode.InnerXml ; } return strRet; }
再改成如下:
public override string ToString() { string strRet = ""; XmlNodeList xmlNodeList= xmlDoc.ChildNodes; foreach (XmlNode xmlNode in xmlNodeList) { strRet = strRet + xmlNode.OuterXml ; } return strRet; }
为了得到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; }
能够得到节点了,下面得到节点中指定元素的属性或值。
改成
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; }
得到的结果是
改成
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; }
得到的结果是
改成
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; }
总结一下:
可以看出,Text是对标记里面的内容的提取,而Xml则是对标记和标记内容的提取,其中innerXml不包括当前节点的提取,而outerXml则将自身包括在内。