Вставить элемент XML во встроенный код VB - PullRequest
2 голосов
/ 17 ноября 2008

Рассмотрим следующий код в VB9:

Dim text = "Line1<br/>Line2"
Dim markup = <span><%= text %></span>.ToString

Хотя я надеялся, что разметка окажется <span>Line1<br/>Line2</span>, на самом деле она оценивается как <span>Line1&lt;br/&gt;Line2</span>.

Есть ли способ получить значение переменной, чтобы она не была закодирована в HTML?

П.С .: Это упрощенный пример того, что я пытаюсь сделать. Я знаю, что это можно переписать несколькими способами, чтобы заставить его работать, но способ, которым построен мой код, был бы оптимальным, если закодировать переменную Если это невозможно, я пойду другим путем.

Более подробно: «текст» поступает из базы данных, где пользователь может вводить текст произвольной формы с возвратом каретки. Выводом является HTML, поэтому каким-то образом мне нужно получить значение из базы данных и преобразовать возврат каретки в разрывы строк.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2008

Это поведение "По замыслу". При встраивании строкового выражения в литерал XML значение будет экранировано, чтобы быть допустимым строковым значением.

Чтобы получить искомое поведение, вам нужно встроить XElement / XNode в литерал XML. Возьмите следующий пример. Он будет правильно хранить тег <br/> в качестве XElement.

Dim text2 = <a>Line<br/>Line</a>
Dim markup2 = <span><%= text2 %></span>.ToString

Один из способов добиться этого - подделать XElement. Чтобы сделать текст допустимой строкой, просто оберните его с обоих концов обычным тегом, например <a>. Теперь это разборный фрагмент XML. Если у вас есть XElement, вы можете легко получить необходимое встроенное поведение

Dim text = "Line1<br/>Line2"
Dim text2 = XElement.Parse("<a>" + text + "</a>")
Dim markup = <span><%= text2.Nodes %></span>.ToString
1 голос
/ 10 декабря 2008

В VB.NET вы можете напрямую писать XML-литералы

Dim markup As XElement = <span>Line1<br/>Line2</span>
  • Компилятор VB «видит» XML,
  • и создает для вас эквивалентные команды XLinq .

Подробнее о XML-литералах в VB.NET .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...