彼得,
我在一篇新文章中回答你,因爲我在評論中沒有足夠的空間。
如果你想根據自己的例子,我想你需要創建一個插件有助於該網站的文件中聲明的擴展點擴展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可以不知道其他檢查。 –