Создать «поддерево» NodeList с явной ссылкой на Node - PullRequest
1 голос
/ 09 августа 2011

Мне нужно сгенерировать NodeList, который представляет все поддерево (включая атрибуты, комментарии и объявления пространства имен) данного Node в моем Document.

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

<?xml version="1.0"?>
<my:root xmlns:my="http://www.my.com/#">
  <my:element type="1">
    <my:content green="true">
      <xx:content xmlns:xx="http:://www.xx.com/#"/>
    </my:content>
  </my:element>
</my:root>

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

<my:element type="1">
  <my:content green="true">
    <xx:content xmlns:xx="http:://www.xx.com/#"/>
  </my:content>
</my:element>

a) Как я могу этого добиться, если, например, атрибут type можно считать уникальным?В настоящее время я использую выражение XPath вроде

/descendant-or-self::node()[@type='1']/descendant-or-self::node()

Есть ли лучший способ сделать это?

b) В другом сценарии мне просто дают явные ссылки Node, безлюбое знание их контекста в DOM, что означает, что у меня нет средств для умного выбора «якорного узла» с использованием любой описывающей характеристики.Есть ли способ получить выражение XPath из ссылки Node, которая выберет поддерево этого конкретного узла?Или это единственный шанс, который у меня есть в этом случае - генерация NodeList вручную, путем перебора узла и его дочерних элементов?

1 Ответ

0 голосов
/ 28 сентября 2011

Может быть Дерево представлений + Представление Источник данных поможет? Я бы порекомендовал поэкспериментировать с ними.

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