利用Dom操作字符串一例

有时对字符串的处理可以利用Dom模式,例如下面字符串:

<a1>a1的值</a1><a2>a2的值</a2><a3>a3的值</a3><a4><b4 id='b4'>b4的值</b4></a4>

要将b4元素的值修改为“修改后的b4“。

除了用正则的方法外,还可以考虑Dom操作,下面分别用XmlDocument类和HtmlAgilityPack操作。

方法1,用XmlDocument类:


代码如下:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<xml>" + s + "</xml>");
xmlDoc.SelectSingleNode(@"//b4").InnerText = "修改后的b4";
Response.Write(Server.HtmlEncode(xmlDoc.DocumentElement.InnerXml));

上面第二句是关键,由于源字符串可能缺少唯一的根元素,如本例,所以在外层包裹一对标签就可以将其转化为合法的xml文档,然后修改后的源文本用xmlDoc.DocumentElement.InnerXml取出。当然方法1仅限于源文本近似于xml且比较规范的场合。

方法2,用HtmlAgilityPack:


代码如下:

string s = @"<a1>a1的值</a1><a2>a2的值</a2><a3>a3的值</a3><a4><b4 id='b4'>b4的值</b4></a4>";
HtmlDocument hxmlDoc = new HtmlDocument();
hxmlDoc.LoadHtml(s);
hxmlDoc.DocumentNode.SelectSingleNode(@"//b4").InnerHtml = "修改后的b4";
Response.Write(Server.HtmlEncode(hxmlDoc.DocumentNode.InnerHtml));

无须用标签包裹,因为即使没有唯一根元素,HtmlAgilityPack仍能正常解析。

以上两种方法启示我们对于数据量不太大、执行效率要求不太高的数据,可以自行组织成标签的形式,在程序中使用,也可以存放在文本文件中。相应的读取写入操作是比较方便的。读者可以对Dom操作涉及的类和成员做进一步封装,简化相应操作。

(0)

相关推荐

  • 利用Dom操作字符串一例

    有时对字符串的处理可以利用Dom模式,例如下面字符串: <a1>a1的值</a1><a2>a2的值</a2><a3>a3的值</a3><a4><b4 id='b4'>b4的值</b4></a4> 要将b4元素的值修改为"修改后的b4". 除了用正则的方法外,还可以考虑Dom操作,下面分别用XmlDocument类和HtmlAgilityPack操作. 方法1,用Xml

  • Jquery-1.9.1源码分析系列(十一)之DOM操作

    DOM操作包括append.prepend.before.after.replaceWith.appendTo.prependTo.insertBefore.insertAfter.replaceAll.其核心处理函数是domManip. DOM操作函数中后五种方法使用的依然是前面五种方法,源码 jQuery.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before&quo

  • Jquery基础教程之DOM操作

    对于dom的全称大家都知道吧,DOM是Document Object Model的缩写,其意思是文档对象模型.DOM是一种与浏览器.平台.语言无关的接口,使用dom接口很容易的访问页面中所有标准组件.dom操作一般可以分为三个方面即DOM Core(核心).HTM-Dom和CSS-DOM. 每一个网页都可以用DOM表示出来,每个DOM都可以看作是一棵DOM树.下面的html页面结构可以构建出一棵DOM树,代码: 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DT

  • JavaScript——DOM操作——Window.document对象详解

    一.找到元素: docunment.getElementById("id"):根据id找,最多找一个:     var a =docunment.getElementById("id");将找到的元素放在变量中:     docunment.getElementsByName("name"):根据name找,找出来的是数组:     docunment.getElementsByTagName("name"):根据标签名找,找

  • Python基于dom操作xml数据的方法示例

    本文实例讲述了Python基于dom操作xml数据的方法.分享给大家供大家参考,具体如下: 1.xml的内容为del.xml,如下 <?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>4</maxid> <login username="pytest" passwd='123456'> <caption>Python

  • Manipulation-TypeScript DOM操作示例解析

    目录 DOM Manipulation 对 HTMLElement 类型的探索 基础案例 Document 接口 Document.getElementById Document.createElement Node 接口 Node.appendChild NodeList 接口 与 NodeListOf 接口 children 和 childNodes 的区别 querySelector 和 querySelectorAll 方法 DOM Manipulation 对 HTMLElement

  • AngularJS中的DOM操作用法分析

    本文实例讲述了AngularJS中的DOM操作用法.分享给大家供大家参考,具体如下: 在angular中使用第三方插件时最好都封装到指令(directives)中去,DOM操作也最好都解构到指令中. 避免使用 jQuery 来操作 DOM,包括增加元素节点,移除元素节点,获取元素内容,隐藏或显示元素.你应该使用 directives 来实现这些动作,有必要的话你还要编写自己的 directives. 如果你感到很难改变习惯,那么考虑从你的网页中移除 jQuery 吧.真的,AngularJS 中

  • Java客户端利用Jedis操作redis缓存示例代码

    前言 Redis是一个开源的Key-Value数据缓存,和Memcached类似.Redis多种类型的value,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型). Jedis 是 Redis 官方首选的 Java 客户端开发包.下面就来给大家详细关于Java客户端利用Jedis操作redis缓存的相关内容,话不多说,直接来看示例代码吧. 示例代码: //连接redis ,redis的默认端口是6379 Jedis

  • jQuery移动和复制dom节点实用DOM操作案例

    本文章简单的介绍了关于jQuery移动和复制dom节点程序实现,有需要学习的朋友可参考参考. 在做一个项目时,需要dom节点移动,如以下代码: 复制代码 代码如下: <div></div> <p></p> 需要把p标签移动到div标签里,经过测试发现,在jQuery中移动dom节点非常方便: 复制代码 代码如下: $('div').append($('p')) 这样即可把p标签移动到div标签里,千万不要写成这样: 复制代码 代码如下: $('div').a

  • 利用JS判断字符串是否含有数字与特殊字符的方法小结

    前言 本文主要介绍的是利用JS判断字符串是否含有数字与特殊字符的方法,文中有几种不同的方法,包括普通的JS验证法.正则表达式法,另外还有判断是否为浮点数的js函数,在最后还将简要介绍下isNAN函数的使用方法和例子,来一起学习学习吧. 一.正则表达式方法判断是否为数字,包括判断正整数: function checkRate(input) { var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字,//若判断正整数,则后边是:/^[1-9]+[0-9]*]*$/ if

随机推荐