string str = @"<n1><n1.1></n1.1></n1>
<n2><n2.1></n2.1></n2>
<n3><n3.1></n3.1></n3>";
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
XmlReader reader = XmlReader.Create(new System.IO.StringReader(str), settings);
reader.Read();
Response.Write(Server.HtmlEncode(reader.ReadOuterXml()));
Response.Write("<br />");
Response.Write(Server.HtmlEncode(reader.ReadInnerXml()));
Response.Write("<br />");
Response.Write(reader.Name);
reader.Close();
采用的是 XmlReader.Create 创建 XmlReader。
- 由于这里 xml 数据只是一个片段,所以这里指定 ConformanceLevel.Fragment。
- 由于这里 xml 数据节点间存在换行及空格,为了避免将这种空白字符当作节点,指定了 IgnoreWhitespace 为 true,将其忽略掉。
结果:
<n1><n1.1></n1.1></n1>
<n2.1></n2.1>
n3
结论:
使用 ReadOuterXml 与 ReadInnerXml 之前,需要 reader.Read()(或类似方法)来“引导”。
ReadOuterXml 包含当前结点及子节点;ReadInnerXml 只包含其子节点。
ReadOuterXml 与 ReadInnerXml 都将“指针”移动到当前节点的下一个节点,所以最后显示 n3。