0

CodeMirror または XML モード定義スクリプトを変更して、ユーザーが画面に表示してはならないいくつかの属性のフィルタリングを有効にする方法はありますか?

だから私はその属性を見つけて、「display:none」に設定された新しいクラスをそれらに与えたいだけです

例えば...

前:

<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 オブジェクトに変換するときに必要になるため、非表示にしたいだけです。

4

2 に答える 2

0

xslt を使用して、スキーマを必要な形式に変換してみてください。ファイルを置き換えるのではなく、hiden 属性を持つ anather を生成します。

于 2011-08-19T13:21:18.840 に答える
0

仕事をするための私の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);
      }
    }
  }
}
于 2011-09-27T16:43:42.477 に答える