我想在我的应用程序中包含一个XML编辑器 - 类似于VS的带有自动着色的XML编辑器等。
AvalonEdit听起来很棒。
但是,AvalonEdit附带了一个C#语法示例,而不是XML语法。某处是否有XML语法示例?
答案 0 :(得分:5)
在XAML中使用SyntaxHighlighting="XML"
:
xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit"
...
<StackPanel>
<avalonedit:TextEditor SyntaxHighlighting="XML"/>
</StackPanel>
答案 1 :(得分:1)
您所要做的就是更改Avalon中的xshd文件,将其更改为您需要的语言要求。 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="<!-- comment -->" />
<Color foreground="Blue" name="CData" exampleText="<![CDATA[data]]>" />
<Color foreground="Blue" name="DocType" exampleText="<!DOCTYPE rootElement>" />
<Color foreground="Blue" name="XmlDeclaration" exampleText='<?xml version="1.0"?>' />
<Color foreground="DarkMagenta" name="XmlTag" exampleText='<tag attribute="value" />' />
<Color foreground="Red" name="AttributeName" exampleText='<tag attribute="value" />' />
<Color foreground="Blue" name="AttributeValue" exampleText='<tag attribute="value" />' />
<Color foreground="Teal" name="Entity" exampleText="index.aspx?a=1&amp;b=2" />
<Color foreground="Olive" name="BrokenEntity" exampleText="index.aspx?a=1&b=2" />
<RuleSet>
<Span color="Comment" multiline="true">
<Begin><!--</Begin>
<End>--></End>
</Span>
<Span color="CData" multiline="true">
<Begin><!\[CDATA\[</Begin>
<End>]]></End>
</Span>
<Span color="DocType" multiline="true">
<Begin><!DOCTYPE</Begin>
<End>></End>
</Span>
<Span color="XmlDeclaration" multiline="true">
<Begin><\?</Begin>
<End>\?></End>
</Span>
<Span color="XmlTag" multiline="true">
<Begin><</Begin>
<End>></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>"|(?=<)</End>
</Span>
<Span color="AttributeValue" multiline="true" ruleSet="EntitySet">
<Begin>'</Begin>
<End>'|(?=<)</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">
&
[\w\d\#]+
;
</Rule>
<Rule color="BrokenEntity">
&
[\w\d\#]*
#missing ;
</Rule>
</RuleSet>
</SyntaxDefinition>