2017-09-15 70 views
0

將JavaScript放入C#中的XElement對象中的正確方法是什麼?XElement中的JavaScript

目前,我有以下幾點:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Xml.Linq; 

namespace ConsoleApp2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
     var tag = new XElement 
       (
        "script", 
        new XAttribute("type", @"text/javascript"), 
        @" 

    $().ready(onLoad); 

    function onLoad() 
    { 
     if (3 > 1){ 
     alert('Hello world'); 
     } 
    }; 
    " 
       ); 

     Console.WriteLine(tag.ToString()); 

     Console.ReadKey(); 
     } 
    } 
} 

其中給出的輸出:

<script type="text/javascript"> 

    $().ready(onLoad); 

    function onLoad() 
    { 
     if (3 &gt; 1){ 
     alert('Hello world'); 
     } 
    }; 
    </script> 

但是相反的&gt;其實我是想> ...我在做什麼錯?有沒有正確的方法把JavaScript放在XElement中?如果不是什麼正確的方法?

+2

有一個流浪'>'將使無效的XML。 XML不是HTML。如果不使用諸如CDATA之類的XML結構或實體引用(這可能會破壞與HTML的兼容性),則無法在文本中放置單個「>」。 –

+0

看到這:https://msdn.microsoft.com/en-us/library/ee388354(v=vs.110).aspx – PaulF

+0

或者這:https://stackoverflow.com/questions/5304311/unescaping-xml- entities-using-xmlreader-in-net – PaulF

回答

0

以下工作。我不得不添加XCData,並將其放在XCData元素前面// //在JavaScript結尾。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Text; 
using System.Threading.Tasks; 
using System.Xml.Linq; 
using System.Web; 

namespace ConsoleApp2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
     var tag = new XElement 
       (
        "script", 
        new XAttribute("type", @"text/javascript"), 
        "//", 
        new XCData(@" 

    $().ready(onLoad); 

    function onLoad() 
    { 
     if (3 > 1){ 
     alert('Hello world'); 
     } 
    };//") 
       ); 


     Console.WriteLine(tag.ToString()); 

     Console.ReadKey(); 
     } 
    } 
} 

這給下面的輸出:

<script type="text/javascript">//<![CDATA[                                                    
    $().ready(onLoad);                                                        
     function onLoad()                          
     {                               
      if (3 > 1){                            
       alert('Hello world');                         
      }                              
     };//]]></script>