彼得,
我在一篇新文章中回答你,因为我在评论中没有足够的空间。
如果你想根据自己的例子,我想你需要创建一个插件有助于该网站的文件中声明的扩展点扩展Rinzo。
对于内容助理执行我想根据你的例子粗略的实现可以是如下:
public class CustomSourceAssistProcessor implements IXMLContentAssistProcessor {
@Override
public void addAttributeValuesProposals(XMLNode currentNode, String attributeName, String prefix,
ITextViewer viewer, int offset, Collection<ICompletionProposal> results) {
if("x".equals(currentNode.getTagName()) && "type".equals(attributeName)) {
for (String possibleValue : this.getPossibleValuesFromXML()) {
results.add(new CompletionProposal(possibleValue, offset, prefix.length(), 0, null, "Proposal Description...", null, null));
}
}
if("x".equals(currentNode.getTagName()) && "value".equals(attributeName)) {
for (String possibleValue : this.getPossibleValuesFromJavaClass()) {
results.add(new CompletionProposal(possibleValue, offset, prefix.length(), 0, null, "Proposal Description...", null, null));
}
}
}
}
说,就是与Rinzo的API进行交互,和您的特定逻辑收集从外部XML文件或Java的类值或者应在方法getPossibleValuesFromXML()和getPossibleValuesFromJavaClass()
0来实现
上,以添加自定义验证我想粗略实现扩展点的,还可根据您的例子。另一方面,应与此类似:
public class CustomSourceXMLValidator implements XmlValidator {
@Override
public void validate(RinzoXMLEditor editor) {
editor.getModel().getTree().accept(new HierarchicalVisitor() {
@Override
public boolean visitStart(XMLNode node) {
if(node.isTag() && "x".equals(node.getTagName())) {
for (Entry<String, XMLAttribute> entry : node.getAttributes().entrySet()) {
if("type".equals(entry.getKey())) {
this.validateValueFromXML(entry.getValue().getValue());
}
if("value".equals(entry.getKey())) {
this.valdateValueFromJavaClass(entry.getValue().getValue());
}
}
}
return true;
}
private void valdateValueFromJavaClass(XMLAttribute xmlAttribute) {
if(!this.getPossibleValuesFromXML().contains(xmlAttribute.getValue())) {
this.createMarker(editor, xmlAttribute);
}
}
private void validateValueFromXML(XMLAttribute xmlAttribute) {
if(!this.getPossibleValuesFromJavaClass().contains(xmlAttribute.getValue())) {
this.createMarker(editor, xmlAttribute);
}
}
});
}
}
而且一旦再次它是给你的方法getPossibleValuesFromXML()和getPossibleValuesFromJavaClass()实施。 您还可以看到ClassNamesValidatorVisitor的源代码为例。
继续摇滚的自由世界! :)
谢谢,但我不是在谈论检查有效和良好的XML文件,但关于Eclipse可以不知道其他检查。 –