2009-08-27 1 views
2

Я использую Linq для XML для некоторых выходных файлов HTML. Мне нужно поместить символ бесконечности (∞) в код на выходе в некоторых ячейках таблицы. Я создаю XElement, подобный этомуLinq to XML - попытка печати символа бесконечности

var table = new XElement("table", 
      new XElement("tr", 
       new XElement("td", "∞") 
      ) 
     ); 

var document = new XDocument (table); document.Save (myFile);

и когда файл сохранен, я не вижу ∞, вместо этого я вижу &#8734. Как предотвратить этот перевод?

ответ

5

LINQ to XML - это правильная вещь - предполагается, что когда вы даете ей строку как контент, это тот контент, который вы хотите увидеть. Это ускользает от вас. Вы действительно не хотите бежать каждый <, > и & себя.

Что вам нужно сделать, это дать ему актуального содержимого, который вы хотите - это символ бесконечности. Так что попробуйте это:

var table = new XElement("table", 
      new XElement("tr", 
       new XElement("td", "\u8734") 
      ) 
     ); 

Это вполне может в конечном итоге не выходит как объект в выходном файле, только закодированном характер - но что должен быть в порядке, до тех пор, пока вы не имеете проблем кодирования ,

EDIT: Я только что проверил, и символ бесконечности на самом деле U + 221E, поэтому вы хотите «\ u221e» вместо этого. Я не могу понять, что означает U + 8734 ... он не может быть определен в Unicode на данный момент.

+0

Для чего в LINQPad вместо символа бесконечности я вижу китайский символ, который может или не может появиться, когда я вставляю его здесь: 蜴 –

+0

@Joel: Да, я только что проверил, и бесконечность U + 221E. Будет редактировать. –

+0

Спасибо, я попробую это сегодня и дам вам знать, как это происходит. –