2012-06-26 4 views
2

Я хотел бы включить редактор XML в моем приложении - подобный редактор XML VS с автоматической окраски и т.д.Как я могу использовать AvalonEdit для редактирования XML-файлов

AvalonEdit звучит как отличное решение.

Однако AvalonEdit поставляется с образцом синтаксиса C#, а не синтаксисом XML. Есть ли образец для синтаксиса XML где-нибудь?

ответ

1

Все, что вам нужно сделать, это изменить файл xshd в Avalon, чтобы изменить его на требуемые языковые требования. Многие из общего языка подсветка синтаксиса уже предусмотрен на SharpDevelop Git: Link

Для XML файл xshd выглядит следующим образом:

<SyntaxDefinition name="XML"  extensions=".xml;.xsl;.xslt;.xsd;.manifest;.config;.addin;.xshd;.wxs;.wxi;.wxl;.proj;.csproj;.vbproj;.ilproj;.booproj;.build;.xfrm;.targets;.xaml;.xpt;.xft;.map;.wsdl;.disco;.ps1xml;.nuspec" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008"> 
<Color foreground="Green" name="Comment" exampleText="&lt;!-- comment --&gt;" /> 
<Color foreground="Blue" name="CData" exampleText="&lt;![CDATA[data]]&gt;" /> 
<Color foreground="Blue" name="DocType" exampleText="&lt;!DOCTYPE rootElement&gt;" /> 
<Color foreground="Blue" name="XmlDeclaration" exampleText='&lt;?xml version="1.0"?&gt;' /> 
<Color foreground="DarkMagenta" name="XmlTag" exampleText='&lt;tag attribute="value" /&gt;' /> 
<Color foreground="Red" name="AttributeName" exampleText='&lt;tag attribute="value" /&gt;' /> 
<Color foreground="Blue" name="AttributeValue" exampleText='&lt;tag attribute="value" /&gt;' /> 
<Color foreground="Teal" name="Entity" exampleText="index.aspx?a=1&amp;amp;b=2" /> 
<Color foreground="Olive" name="BrokenEntity" exampleText="index.aspx?a=1&amp;b=2" /> 

<RuleSet> 
    <Span color="Comment" multiline="true"> 
     <Begin>&lt;!--</Begin> 
     <End>--&gt;</End> 
    </Span> 
    <Span color="CData" multiline="true"> 
     <Begin>&lt;!\[CDATA\[</Begin> 
     <End>]]&gt;</End> 
    </Span> 
    <Span color="DocType" multiline="true"> 
     <Begin>&lt;!DOCTYPE</Begin> 
     <End>&gt;</End> 
    </Span> 
    <Span color="XmlDeclaration" multiline="true"> 
     <Begin>&lt;\?</Begin> 
     <End>\?&gt;</End> 
    </Span> 
    <Span color="XmlTag" multiline="true"> 
     <Begin>&lt;</Begin> 
     <End>&gt;</End> 
     <RuleSet> 
      <!-- Treat the position before '<' as end, as that's not a valid character 
       in attribute names and indicates the user forgot a closing quote. --> 
      <Span color="AttributeValue" multiline="true" ruleSet="EntitySet"> 
       <Begin>"</Begin> 
       <End>"|(?=&lt;)</End> 
      </Span> 
      <Span color="AttributeValue" multiline="true" ruleSet="EntitySet"> 
       <Begin>'</Begin> 
       <End>'|(?=&lt;)</End> 
      </Span> 
      <Rule color="AttributeName">[\d\w_\-\.]+(?=(\s*=))</Rule> 
      <Rule color="AttributeValue">=</Rule> 
     </RuleSet> 
    </Span> 
    <Import ruleSet="EntitySet"/> 
</RuleSet> 

<RuleSet name="EntitySet"> 
    <Rule color="Entity"> 
     &amp; 
     [\w\d\#]+ 
     ; 
    </Rule> 

    <Rule color="BrokenEntity"> 
     &amp; 
     [\w\d\#]* 
     #missing ; 
    </Rule> 
</RuleSet> 
</SyntaxDefinition> 
4

Просто используйте SyntaxHighlighting="XML" в вашем XAML:

xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit" 
... 
<StackPanel> 
    <avalonedit:TextEditor SyntaxHighlighting="XML"/> 
</StackPanel> 
+0

Примечание : '' XML "' чувствителен к регистру. Полный список параметров находится в https://github.com/icsharpcode/AvalonEdit/blob/master/ICSharpCode.AvalonEdit/Highlighting/Resources/Resources.cs – Mitch