首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

这个有关问题可能有一点难度 希望前辈们看看

2013-11-14 
这个问题可能有一点难度 希望前辈们看看是这样的。我有一个需求.需要将一段HTML字符串中样式没有单引号 或

这个问题可能有一点难度 希望前辈们看看
是这样的。我有一个需求.需要将一段HTML字符串中样式没有单引号 或者双引号的改成单引号.
比如其中有一个标签<table border=0></table>  这样的话我需要用代码改成<table border='0'></table>
因为如果不替换的 我后面的将HTML字符串转换为XML 会报错。需要动态处理 不能手动修改HTML字符串。

字符串中的字符不确定有多少个这样的需要添加或修改的标签.
本来开始打算用正则去匹配

不过老大说 让我用一个递归算法来实现  从<html> 开始 一层一层的递归去寻找替换或者修改。
思路我知道 但是实现上 我遇到点瓶颈  希望各位不吝赐教 谢谢! 递归 HTML asp.net
[解决办法]
所谓“思路”,就是html语法分析。

那种匹配个简单的词法,功能很差劲。只有依据语法来处理,例如 HtmlAgility 那样,才是语法分析。
[解决办法]
这个是xml解析的问题,应该使用转义字符:

&lt; <  小于号
 
&gt; >  大于号
 
&amp; & 和
 
&apos; ’ 单引号
 
&quot; " 双引号

http://blog.csdn.net/teedry/article/details/5816687
[解决办法]
建议还是用标准的xml解析程序去分析。
[解决办法]
楼主问的也是关于XML针对特殊符号编码问题而已。
不需要去刻意去处理html。因为html变化很多样,楼主的关键点在于如何针对xml的特殊字符串进行格式化,单单"或'是没法真正解决问题的。

[解决办法]
不知楼主是如何保存为XML文件的,若是可以的话,在XML文件中直接丢进<![CDATA[你的内容]]>中就可以了,不用考虑什么转义、单双引之类的问题
[解决办法]

引用:
<body class='printBody'>      <div class='printFormMiddleContainer'>
        <table width='100%' height='100%' cellspacing='0' cellpadding='0'><tr><td valign='top'><div class='printTab'><table cellspacing='0' cellpadding='0' width='100%'><tr><td><table valign='top' cellspacing='0' cellpadding='0' border='0' width='100%'><tr><td><table valign='top' cellspacing='0' cellpadding='0' class='secTable' width='100%' height='1%' style='display:block;'><col/><col/><tr valign='top'><td class='formCell' colspan='2'><table cellpadding='0' cellspacing='0' border='0' style='width:100%;height:100%;'><col style='width:90px'/><col/><tr><td class='cellLabel' >名称:</td><td class='relatedInfoContent'>aaaaaa</td></tr></table></td></tr><tr valign='top'><td class='formCell'><table cellpadding='0' cellspacing='0' border='0' style='width:100%;height:100%;'><col style='width:90px'/><col/><tr><td class='cellLabel' >客户:</td><td class='relatedInfoContent'>Aaronrdg</td></tr></table></td><td class='formCell'><table cellpadding='0' cellspacing='0' border='0' style='width:100%;height:100%;'><col style='width:90px'/><col/><tr><td class='cellLabel' >报价人:</td><td class='relatedInfoContent'>檀庭</td></tr></table></td></tr><tr valign='top'><td class='formCell'><table cellpadding='0' cellspacing='0' border='0' style='width:100%;height:100%;'><col style='width:90px'/><col/><tr><td class='cellLabel' >报价时间:</td><td class='relatedInfoContent'>2013-10-29 16:41</td></tr></table></td><td class='formCell'><table cellpadding='0' cellspacing='0' border='0' style='width:100%;height:100%;'><col style='width:90px'/><col/><tr><td class='cellLabel'  style='text-align:0;'></td><td class='relatedInfoContent'></td></tr></table></td></tr></table></td></tr></table></td></tr><tr><td><table valign='top' cellspacing='0' cellpadding='0' border='0' width='100%'><tr height='18'><td class='sec_bar'>商品清单</td></tr><tr height='5'><td></td></tr><tr><td><table valign='top' cellspacing='0' cellpadding='0' class='secTable' width='100%' height='100%' style='display:block;'><col width='50%'/><col width='50%'/><tr valign='top' height='100%'><td class='formCell' colspan='2'><table cellpadding='0' cellspacing='0' border='0' style='width:100%;height:115px;'><col/><tr><td class='relatedInfoContent' style='padding-bottom:3px;'><table class='printTable' border='0' cellspacing='0' cellpadding='3'><tr><td class='printTdHeader' width='125' align='left'>描述</td><td class='printTdHeader' width='125' align='left'>规格</td><td class='printTdHeader' width='50' align='left'>数量</td><td class='printTdHeader' width='75' align='left'>单价 (¥)</td><td class='printTdHeader' width='75' align='left'>小计 (¥)</td></tr><tr><td  class='printTd' align='left'>成本测试</td><td  class='printTd' align='left'>成本测试规格1</td><td  class='printTd' align='left'>2.00</td><td  class='printTd' align='left'>¥2,614.40</td><td  class='printTd' align='left'>¥5,228.80</td></tr><tr><td  class='printTd' align='left'>校园网站标准版</td><td  class='printTd' align='left'></td><td  class='printTd' align='left'>2.00</td><td  class='printTd' align='left'>¥33.00</td><td  class='printTd' align='left'>¥66.00</td></tr><tr><td  class='printTd' align='left'>成本测试</td><td  class='printTd' align='left'>成本测试规格2</td><td  class='printTd' align='left'>1.00</td><td  class='printTd' align='left'>¥3,300.00</td><td  class='printTd' align='left'>¥3,300.00</td></tr><tr><td  class='printTd' align='left'>参数5</td><td  class='printTd' align='left'></td><td  class='printTd' align='left'>1.00</td><td  class='printTd' align='left'>¥1.00</td><td  class='printTd' align='left'>¥1.00</td></tr><tr><td  class='printTd' align='left'>参数8</td><td  class='printTd' align='left'></td><td  class='printTd' align='left'>1.00</td><td  class='printTd' align='left'>¥2.00</td><td  class='printTd' align='left'>¥2.00</td></tr><tr><td  class='printTd' align='left'>参数9</td><td  class='printTd' align='left'></td><td  class='printTd' align='left'>1.00</td><td  class='printTd' align='left'>¥4.00</td><td  class='printTd' align='left'>¥4.00</td></tr><tr><td  class='printTd' align='left'>总价</td><td  class='printTd' align='left'></td><td  class='printTd' align='left'>0.00</td><td  class='printTd' align='left'>¥0.00</td><td  class='printTd' align='left'>¥8,601.80</td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></div></td></tr></table></div></body>



这是大概的HTML字符串 - - 希望各位前辈给出远吗参考一下 一般我不会要求的。。


把你们老大割了,正则多好,非得这样!要干吗?
[解决办法]
用转义字符才是比较标准通用的作法,否则一旦你的xml要作其它用途会埋下隐患
[解决办法]
如果不考虑效率 不需要用到递归,但是比较的繁琐我想到了1个方法但是自我感觉不太良好,比如你的Html代码是这样的 <table class=myclass></table><table border=0></table>

[解决办法]
引用:
Quote: 引用:

楼主问的也是关于XML针对特殊符号编码问题而已。
不需要去刻意去处理html。因为html变化很多样,楼主的关键点在于如何针对xml的特殊字符串进行格式化,单单"或'是没法真正解决问题的。

目前需要解决的就是这个问题。其他的暂时不考虑 视情况而定。
因为我这个HTML字符串
   XmlDocument xml = XmlHelper.CreateXmlDocument(str);会出问题。单引号的问题

如果你非得将得到的字符串当做 xml文档来进行识别,那为什么不直接用 json呢?
如果很急忙处理。为何不直接将这个xml当做 普通字符串用正则表达式进行单独解析呢?
[解决办法]
用jq写一段js,把所有的属性值(属性也就那么多,全部罗列出来)替换(比如:

var _t=$(this).attr("paramattr");
$(this).attr("paramattr",'"'+_t+'"');


,然后获取当前页面的所有html,ajax到一般处理文件,进行xml解析

热点排行