CodeMirror 2: Как отфильтровать атрибуты xml? - PullRequest
0 голосов
/ 19 августа 2011

Есть ли способ изменить сценарий определения режима CodeMirror или XML, чтобы включить фильтрацию нескольких атрибутов, которые пользователь не должен видеть на экране?

Итак, я просто хочу найти эти атрибуты и дать им новый класс с установленным значением 'display: none'

Например ...

before:

<sample1 xns:id="e7b014d9-6271-4e32-921d-7488edfd6ea4">a</sample1>
<sample2 xns:id="d3450e86-7264-4512-9891-6c7183257741">b</sample2>
<sample3 xns:id="7f04f178-f235-4647-8584-c4e77f73fecf">c</sample3>

после:

<sample1>a</sample1>
<sample2>b</sample2>
<sample3>c</sample3>

И я не хочу удалять атрибуты из самого XML, я просто хочу их скрыть, потому что они нужны мне, когда я преобразую результат редактирования обратно в объект XML.

Ответы [ 2 ]

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

Вот мой код C #, чтобы сделать работу.Вы можете легко изменить его в JavaScript.

public static string RemoveAttributes(
        string xmlString)  {
  string retXML = null;
  XmlDocument xDoc = new XmlDocument();
  xDoc.LoadXml(xmlString);
  XmlNode root = xDoc.DocumentElement;
  if (xDoc.DocumentElement != null) {
     XmlNodeList list = xDoc.SelectNodes(@"/");

     if ( list != null ) {
        RemoteAttributes(list);
        retXML = root.OuterXml;
     }
  }

  return retXML;
}

private static void RemoteAttributes(XmlNodeList list) {
  if (list != null ) {
    foreach (XmlNode node in list) {
      if (node.Attributes != null) {
        node.Attributes.RemoveAll();
      }
      if (node.HasChildNodes) {
        RemoteAttributes(node.ChildNodes);
      }
    }
  }
}
0 голосов
/ 19 августа 2011

Вы можете попробовать использовать xslt для преобразования схемы в нужный вам формат.Не заменять файл, а генерировать другое с атрибутами hiden.

...