Хранение HTML или XML-кода в переменных JavaScript - PullRequest
2 голосов
/ 26 февраля 2011

Я хотел бы сохранить некоторые HTML / XML-разметки в переменной javascript. Проблема в том, что текст относительно большой. Например, как я могу сохранить следующий фрагмент XML в переменной javascript?

    <QuestionForm xmlns="[the QuestionForm schema URL]">
  <Overview>
    <Title>Game 01523, "X" to play</Title>
    <Text>
      You are helping to decide the next move in a game of Tic-Tac-Toe.  The board looks like this:
    </Text>
    <Binary>
      <MimeType>
        <Type>image</Type>
        <SubType>gif</SubType>
      </MimeType>
      <DataURL>http://tictactoe.amazon.com/game/01523/board.gif</DataURL>
      <AltText>The game board, with "X" to move.</AltText>
    </Binary>
    <Text>
      Player "X" has the next move.
    </Text>
  </Overview>
  <Question>
    <QuestionIdentifier>nextmove</QuestionIdentifier>
    <DisplayName>The Next Move</DisplayName>
    <IsRequired>true</IsRequired>
    <QuestionContent>
      <Text>
        What are the coordinates of the best move for player "X" in this game?
      </Text>
    </QuestionContent>
    <AnswerSpecification>
      <FreeTextAnswer>
        <Constraints>
          <Length minLength="2" maxLength="2" />
        </Constraints>
        <DefaultText>C1</DefaultText>
      </FreeTextAnswer>
    </AnswerSpecification>
  </Question>
  <Question>
    <QuestionIdentifier>likelytowin</QuestionIdentifier>
    <DisplayName>The Next Move</DisplayName>
    <IsRequired>true</IsRequired>
    <QuestionContent>
      <Text>
        How likely is it that player "X" will win this game?
      </Text>
    </QuestionContent>
    <AnswerSpecification>
      <SelectionAnswer>
        <StyleSuggestion>radiobutton</StyleSuggestion>
        <Selections>
          <Selection>
            <SelectionIdentifier>notlikely</SelectionIdentifier>
            <Text>Not likely</Text>
          </Selection>
          <Selection>
            <SelectionIdentifier>unsure</SelectionIdentifier>
            <Text>It could go either way</Text>
          </Selection>
          <Selection>
            <SelectionIdentifier>likely</SelectionIdentifier>
            <Text>Likely</Text>
          </Selection>
        </Selections>
      </SelectionAnswer>
    </AnswerSpecification>
  </Question>
</QuestionForm>

Ответы [ 4 ]

9 голосов
/ 26 февраля 2011

Я предполагаю, что ваш вопрос заключается в том, как получить именно эту строку, а не ту, которую вы извлекаете из веб-службы, вызова Ajax или тому подобного.Хотя это довольно плохая идея по многим причинам, чтобы ответить на вопрос ...


В JavaScript нет действительно хорошего способа сделать это. Некоторые браузеры поддерживают строкупродолжения, поместив \ в конце строки, чтобы вы могли сделать что-то вроде:

var xml = '<QuestionForm xmlns="[the QuestionForm schema URL]">\
  <Overview>\
    <Title>Game 01523, "X" to play</Title>\
    ...';

Но это нестандартно и фактически прямо противоречит спецификации JS:

Символ 'LineTerminator' не может появляться в строковом литерале, даже если ему предшествует обратная косая черта.

Единственный действительно надежный способ сделать это - ручная конкатенация строк:

var xml = '<QuestionForm xmlns="[the QuestionForm schema URL]">' + "\n" +
'      <Overview>' + "\n" +
'        <Title>Game 01523, "X" to play</Title>' + "\n" +
'        ...';

Вы можете сделать это немного аккуратнее, например:

var xml = ['<QuestionForm xmlns="[the QuestionForm schema URL]">',
'      <Overview>',
'        <Title>Game 01523, "X" to play</Title>'
'        ...'].join("\n");

Но это все равно отстой.

Кроме того, при всех этих подходах вам придется избегать любогокавычки, т.е. заменить ' на \'.На первый взгляд я не увидел ничего в вашем фрагменте XML, и это хорошо.

4 голосов
/ 11 апреля 2013

Я думаю, вы, возможно, хотели сохранить html / xml-код в javascript и отобразить в textarea или некоторых других элементах ввода.Если это ваше намерение, это поможет вам.

Вместо переменной javascript сохраните свой код в div и скройте с помощью css ex: display:none.Если вы хотите показать код, вы можете использовать $('#div id').text().

0 голосов
/ 26 февраля 2011
var string = (<r><![CDATA[

   The text string goes here.  Since this is a XML CDATA section,
   stuff like <> work fine too, even if definitely invalid XML. 

]]></r>).toString();
0 голосов
/ 26 февраля 2011

Я рекомендую вам использовать JSON, приятель. Это менее многословно. И у javascript есть методы, чтобы справиться с этим красиво. Если вам нужно работать с XML позже в ваших классах, вы можете написать простой адаптер.

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