Существует ли механизм по умолчанию для получения плоского строкового представления узла XML? - PullRequest
0 голосов
/ 02 декабря 2011

Я не хочу использовать jQuery для:

Если бы у меня был следующий XML

<parent>
    <a >some text
      <b propA="foo">some more text

      </b>
      and more text still
    </a>
   </parent>

и хотел назвать что-то вроде

// псевдо ... Я передаю узел 1, потому что узел 0 - это бесполезный пустой текстовый узел ...

getFlatXMLAsString (parent.childNodes [1])

и получите строку, похожую на "<a>some text\n<b propA="foo">some more text\n\n</b>and more text still</a>"

Обратите внимание, что он просто преобразует XML в плоскую строку, но включает в себя собственные открывающие и закрывающие теги узла (и если у него есть атрибуты, у него также будут те и там).

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

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011

Согласно ответу, опубликованному здесь кросс-браузерный способ сделать это выглядит следующим образом:

function outerHTML(node){
    // if IE, Chrome take the internal method otherwise build one
  return node.outerHTML || (
  function(n){
      var div = document.createElement('div'), h;
      div.appendChild( n.cloneNode(true) );
      h = div.innerHTML;
      div = null;
      return h;
  })(node);
  }

То есть, если я правильно понимаю вопрос.

1 голос
/ 02 декабря 2011

В браузерах Mozilla и Webkit вы можете использовать XMLSerializer. Просто сделайте объект-тест.

Я не знаю, какие функции доступны в других браузерах, но они могут иметь один.

В худшем случае вам придется написать функцию, которая делает это вручную, которая обходит все узлы и записывает в строку. Этот ответ должен помочь вам начать.

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