2017-09-15 15 views
0

C#のXElementオブジェクトにjavascriptを挿入する正しい方法は何ですか?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を持つ:以下の出力が得られます

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(); } } } 

。 XMLはHTMLではありません。 HTMLとの互換性を損なう可能性のある、CDATAやエンティティ参照などのXML構造を使用せずに、テキストに単一の '> 'を入れる方法はありません。 –

+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の最後に置かなければなりません。

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