实战 ReadOuterXml 与 ReadInnerXml

作者:vkvi 来源:ITPOW(原创) 日期:2010-6-23
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。

相关文章