Frågan#1
Tjena
Jag har dessa två funktioner:
private void maskScript()
{
// Add <![CDATA[ ... ]]> to mask script
strXhtmlMarkup = Regex.Replace(strXhtmlMarkup,
@"(<script[^<]*>){1}(?(?=\s*<!--)(\s*<!--)(\s*.*?)(//\s*-->)|(\s*.*?))\s*(</script>){1}",
new MatchEvaluator(FixStyleAndScript),
RegexOptions.IgnoreCase | RegexOptions.Singleline);
}
private string FixStyleAndScript(Match m)
{
string ret = "";
string st, ed;
st = "\r\n//<![CDATA[\r\n";
ed = "\r\n//]]>\r\n";
if (m.Groups[2].ToString().Trim() == "" && m.Groups[4].ToString().Trim() == "")
st = ed = "";
ret = m.Groups[1].ToString() + st;
ret += m.Groups[2].ToString() + m.Groups[4].ToString() + ed + m.Groups[5].ToString();
return ret;
}
strXhtmlMarkup innehåller all kod i ett xhtml dokument, språket är C#.
Säg att detta finns i strXhtmlMarkup:
<script type="text/javascript">
//<![CDATA[
function updateDateTime(el)
{
dateNow = new Date();
document.forms[0].el.value = dateNow.getFullYear();
}
//]]>
</script>
Då ändras detta till
<script type="text/javascript">
//<![CDATA[
//<![CDATA[
function updateDateTime(el)
{
dateNow = new Date();
document.forms[0].el.value = dateNow.getFullYear();
}
//]]>
//]]>
</script>
Anledningen till att dessa två funktioner finns alls är att om det ser ut såhär:
<script type="text/javascript">
<!--
function updateDateTime(el)
{
dateNow = new Date();
document.forms[0].el.value = dateNow.getFullYear();
}
-->
</script>
så är det fel i xml, eftersom <!-- kommenterar bort scriptet. Då vill jag att detta ska ändras till cdata. Men problemet är ju att den ändrar även cdata som redan finns och lägger till en till cdata.
