1.9 个爱不释手的编l编 JSON 工具
2.å¦ä½ä¸º Editor å¼å Eclipse Outline è§å¾
3.如何在Eclipse中开发XML可视化编辑器
4.开发者指南如何在MyEclipse中使用 XML编辑器
5.vscode软件是干嘛的
6.ultraedit功能
9 个爱不释手的 JSON 工具
阅读本文大概需要 3.2 分钟。
来自: developer.cto.com/art...
JSON因其易于使用和机器解析生成而受到开发者青睐,辑器辑器吸引了众多工具构建者的源码关注。这些工具涵盖了从在线实用程序到代码编辑器和IDE插件,开源以下介绍了九款精选JSON工具。编l编
JSONLint:CircleCell开发的辑器辑器源码资本好吗在线验证和重新格式化工具,可验证和解析“混乱”的源码JSON代码,并用作压缩工具。开源访问:jsonlint.com/,编l编源代码:github.com/circlecell/j...
JSONCompare:CircleCell开发的辑器辑器JSON验证工具,可上传和验证多个批处理JSON文件,源码比较和合并JSON对象。开源访问:jsoncompare.com/,编l编源代码:github.com/circlecell/j...
jtc:JSON测试控制台,辑器辑器用于提取、源码处理和转换源JSON,支持Linux和MacOS编译二进制文件下载。访问:github.com/ldn-softdev/...
ijson:基于Python的迭代JSON解析工具,提供多种实际解析实现,访问:pypi.org/project/ijson/#...
JSON格式化和验证器:在线格式化工具,美化JSON以便阅读和调试,访问:jsonformatter.curiousconcept.com...
Altova XMLSpy JSON和 XML编辑器:提供XML相关技术的编辑、建模、转换和调试工具,访问:altova.com/xmlspy-xml-e...
Code Beautify JSON工具:提供JSON查看器、编辑器、pushbear源码验证器及转换器,还提供在线脚本编辑器、美化器等,访问:codebeautify.org/json-t...
Visual Studio Code:微软代码编辑器,内置支持编辑JSON文件的功能,访问:code.visualstudio.com/D...
Eclipse JSON编辑器插件:面向Eclipse IDE的免费JSON编辑器插件,提供语法高亮、代码折叠、格式化和编辑等功能,访问:marketplace.eclipse.org...
å¦ä½ä¸º Editor å¼å Eclipse Outline è§å¾
å®å¶ Outline è§å¾å¼åå®ä¾æ¬èå°éè¿å®ç°ä¸ä¸ªç®åç XML ææ¡£ç¼è¾å¨åå ¶ Outline Page æ¥è¯´æå¦ä½ä¸º Editor å¼åå ¶ Outline è§å¾ãå¾ 3 å±ç¤ºäºå®ä¾å®ææ¶çææï¼å¾ç左侧为ä¸ä¸ªç®åç XML ææ¬ç¼è¾å¨ï¼å³ä¾§ç Outline è§å¾å°ææ¡£ç XML ç»ç¹ä»¥æ åçæ¹å¼å±ç°åºæ¥ã
å¾ 3. XML Editor å Outline è§å¾
第ä¸æ¥ï¼æ建 XML ææ¡£ç¼è¾å¨ãXML ææ¡£ç¨æ¥åå¨ãä¼ éåæºå¸¦æ°æ®ä¿¡æ¯ï¼ä¸ç¨æ¥è¡¨ç°åå±ç°æ°æ®ãå æ¤å¨æ¬æçä¾åä¸çï¼æä»¬å° XML ææ¡£ç¼è¾å¨è§ä¸ºä¸ä¸ªææ¬ç¼è¾å¨ï¼éè¿ç»§æ¿ org.eclipse.ui.editors.text.TextEditor æ¥å®ç°æ们èªå·±ç XML ç¼è¾å¨ãåæ¶æ们éè¿ org.eclipse.core.contenttype.contentTypes æ©å±ç¹ä¸º xml æ件ç»å®ä¸ºæ们èªå®ä¹çä¸ç§å 容类åï¼å¹¶å°å ¶ç»å®å°æ们çæ°å»ºçç¼è¾å¨ä¸ï¼å½æå¼åç¼ä¸º .xml çæ件æ¶ï¼è¯¥ç¼è¾å¨å°ä¼è¢«åå§åã
æ¸ å 2. Editor æ©å±ç¹å®ä¹
<plugin>
<extension
point="org.eclipse.ui.editors">
<editor
class="cn.com.hf.outline.editor.XMLEditor"
default="true"
extensions="xml"
id="cn.com.hf.outline.XMLEditor"
name="XMLEditor">
<contentTypeBinding
contentTypeId="cn.com.hf.outline.xmlfile">
</contentTypeBinding>
</editor>
</extension>
<extension
point="org.eclipse.core.contenttype.contentTypes">
<content-type
id="cn.com.hf.outline.xmlfile"
name="XMLFile"
priority="high">
</content-type>
<file-association
content-type="cn.com.hf.outline.xmlfile"
file-extensions="xml">
</file-association>
</extension>
</plugin>
第äºæ¥ï¼æ们该为 Editor æ建 Content Outline Pageï¼ç¨äºå¨ Outline è§å¾ä¸å±äº Editor ä¸çå 容å ç´ ãä½ä¸º Outline Pageï¼æ们éè¦å®ç° IContentOutlinePage æ¥å£ãæ们å¯ä»¥å° XML ææ¡£ä¸çæ°æ®æé æä¸ä¸ªæ åçç»æãå æ¤ï¼æ们éç¨ TreeViewer ä½ä¸ºæ们 Outline Page ä¸ç主è¦ç UI å ç´ ãEclipse æ¡æ¶ä¸ºæ们æä¾äºä¸ä¸ªé»è®¤çå å«æ ç¶è§å¾ç ContentOutlinePageï¼è¯¥ç±»ä¸ºæ½è±¡ç±»ï¼æ们éè¿ç»§æ¿è¯¥ç±»æ¥å®ç°æ们éè¦ç大纲è§å¾é¡µé¢ã
æ¸ å 3. XMLOutlinePage.java
public class XMLOutlinePage extends ContentOutlinePage{
@Override
public void createControl(Composite parent) {
super.createControl(parent);
this.getTreeViewer().setLabelProvider(new XMLOutlineLabelProvider());
this.getTreeViewer().setContentProvider(new XMLOutlineContentProvider());
}
}
大纲页é¢ä¸çæ åæ§ä»¶æå±ç°ç为 XML ææ¡£çæ°æ®ç»ç¹ï¼æ们为 TreeViewer æä¾ ContentProvider å LabelProviderï¼ç¨äºéåç»ç¹å ç´ åæ¾ç¤ºç»ç¹çå称ã
æ¸ å 4. XMLOutlineContentProvider å XMLOutlineLabelProvider
public class XMLOutlineContentProvider implements ITreeContentProvider {
@Override
public Object[] getElements(Object inputElement) {
Element root = (Element)inputElement;
return root.getChildren().toArray();
}
@Override
public Object[] getChildren(Object parentElement) {
Element parent = (Element)parentElement;
return parent.getChildren().toArray();
}
@Override
public Object getParent(Object element) {
return ((Element)element).getParent();
}
@Override
public boolean hasChildren(Object element) {
return ((Element)element).getChildren().size() > 0;
}
}
public class XMLOutlineLabelProvider implements ILabelProvider {
@Override
public Image getImage(Object element) {
// TODO Auto-generated method stub
return null;
}
@Override
public String getText(Object element) {
return ((Element)element).getAttributeValue("name");
}
}
第ä¸æ¥ï¼å°æ们ç XML ç¼è¾å¨ä¸å®ç°ç大纲页é¢å ³èèµ·æ¥ï¼å¦ä¸è¡¨æ示ï¼å¨ getAdapter() æ¹æ³ä¸ï¼å½ä¼ å ¥çåæ°ä¸º IContentOutlinePage æ¶ï¼è¯´æ Outline è§å¾å Editor æ¥è¯¢å¤§çº²é¡µé¢ï¼å½å½æ°çè¿åä¸ä¸ºç©ºæ¶ï¼å¤§çº²è§å¾å°ä¼æ页é¢å±ç°åºæ¥ã
æ¸ å 5. XMLEditor getAdapter æ¥å£
public class XMLEditor extends TextEditor{
@Override
public Object getAdapter(Class adapter) {
if (adapter == IContentOutlinePage.class) {
Element root = this.getRootElement();
if (root != null) {
XMLOutlinePage page = new XMLOutlinePage(root);
this.addListenerObject(page);
return page;
}
}
return super.getAdapter(adapter);
}
}
æ们çç¼è¾å¨æ¯ä»¥ææ¬çæ¹å¼æ¾ç¤º XML å 容ï¼å æ¤æ们éè¦å°ææ¬è§£ææ XML ææ¡£å ç´ ï¼æè½å°å ¶æ¾ç¤ºå¨å¤§çº²çæ åç»ç¹ä¸ãå¨æ¬æçä¾åä¸ï¼æä»¬ä½¿ç¨ JDOM ç±»åºæ¥è§£æ XML ææ¡£ï¼æ们æä¾çæºä»£ç ä¸å å«äºè¯¥ç±»åºï¼è¯»è ä¹å¯ä»¥éè¿å ¶å®æ¹ç½ç«è¿è¡ä¸è½½ã
æ¸ å 6. XML Editor çå®ç°
public class XMLEditor extends TextEditor{
public Element getRootElement(){
try {
IDocument doc = this.getDocumentProvider().getDocument(
this.getEditorInput());
String text = doc.get();
SAXBuilder builder = new SAXBuilder();
Reader in = new StringReader(text);
if (builder != null) {
Document document = builder.build(in);
Element root = document.getRootElement();
return root;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
public class XMLOutlinePage extends ContentOutlinePage
public XMLOutlinePage (Element root){
this.root = root;
}
@Override
public void createControl(Composite parent) {
super.createControl(parent);
this.getTreeViewer().setLabelProvider(new XMLOutlineLabelProvider());
this.getTreeViewer().setContentProvider(new XMLOutlineContentProvider());
this.getTreeViewer().setInput(root);
}
}
第åæ¥ï¼ä¸º XML ç¼è¾å¨æ³¨åçå¬å¨ãå½ Editor çææ¬åçååæ¶ï¼Editor ä¼äº§çä¸ä¸ªå±æ§å为 IEditorPart.PROP_DIRTY çäºä»¶ï¼è¡¨æå 容被修æ¹ï¼æ¤æ¶ï¼æ³¨åå¨è¯¥å±æ§ä¸ççå¬å¨å°±ä¼è¢«è°ç¨ãæä»¬å° Outline 页é¢å®ç°ä¸º IEditorPart.PROP_DIRTY ç±»åççå¬å¨ï¼å½ææ¬å 容ååæ¶ï¼é¡µé¢ä¸æ åç»ç¹ä¹å°åçç¸åºçååã
æ¸ å 7. å° XMLOutlinePage å ³èå° XMLEditor
public class XMLOutlinePage extends ContentOutlinePage implements IPropertyListener{
@Override
public void propertyChanged(Object source, int propId) {
if(propId == IEditorPart.PROP_DIRTY){
this.getTreeViewer().setInput(((XMLEditor)source).getRootElement());
}
}
}
public class XMLEditor extends TextEditor {
@Override
public Object getAdapter(Class adapter) {
if (adapter == IContentOutlinePage.class) {
Element root = this.getRootElement();
if (root != null) {
XMLOutlinePage page = new XMLOutlinePage(root);
this.addListenerObject(page);
return page;
}
}
return super.getAdapter(adapter);
}
}
第äºæ¥ï¼ä¸º Outline è§å¾æ·»å å·¥å ·æ æé®ã大纲页é¢ä¸çç»ç¹å ç´ çæååºåæ¯æç §å ¶å¨ XML ææ¡£ä¸åºç°çå å顺åºæåçï¼è¿æ ·ç¨æ·å¨æ¥æ¾èµ·æ¥å°±ç¸å½çä¸æ¹ä¾¿ï¼å æ¤æ们å¯ä»¥å¨ Outline è§å¾ä¸æ·»å ä¸ä¸ªæåºæé®ï¼å°å¤§çº²é¡µé¢ä¸å ç´ æå ¶å称çåæ¯åºè¿è¡æåï¼ä»¥æ¹ä¾¿æ¥æ¾ã
é¦å æä»¬å¨ XMLOutlinePage ä¸å建ä¸ä¸ªå é¨ç±» SortActionï¼å ¶ä½ç¨æ¯ç»å¤§çº²é¡µé¢ç TreeViewer 设置æåºå¨ï¼ä¸»è¦ä»£ç å¦ä¸æ示ãå¨ valueChange() æ¹æ³ä¸ï¼å½æ们éä¸æåºæé®æ¶ï¼ä¸ºå ¶æ·»å ä¸ä¸ªåæ¯åºçææåºå¨ï¼å¦åæåºå¨é»è®¤ä¸ºç©ºï¼å ç´ æå ¶å¨ææ¡£ä¸åºç°ç顺åºæåã
æ¸ å 7. SortAction
private ViewerComparator lexComparator = new ViewerComparator(new LexComparator());
private class SortAction extends Action{
public SortAction() {
super();
this.setId("cn.com.hf.outline.page.sortAction");
this.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(
"XMLEditorOutline", "icons/alphab_sort_co.gif"));
this.setDisabledImageDescriptor(AbstractUIPlugin
.imageDescriptorFromPlugin("XMLEditorOutline",
"icons/alphab_sort_co_dl.gif"));
this.setEnabled(true);
this.valueChange(false);
}
@Override
public void run() {
this.valueChange(isChecked());
}
private void valueChange(final boolean on) {
this.setChecked(on);
final TreeViewer viewer = getTreeViewer();
BusyIndicator.showWhile(viewer.getControl().getDisplay(),
new Runnable() {
public void run() {
if (on){
viewer.setComparator(lexComparator);
} else {
viewer.setComparator(null);
}
}
});
}
}
æ¥çï¼æ们è½è¿ pageSite è·å¾ Outline è§å¾å·¥å ·æ å®ä¾ï¼å° SortAction æ·»å å°å·¥å ·æ ä¸ãpageSite æ¯å¤§çº²é¡µé¢ä¸å¤é¨ UI å ç´ è¿è¡éä¿¡çæ¡¥æ¢ï¼å½ Outline 页é¢åå§åæ¶ï¼workbench ä¼åå§å OutlinePage ç pageSite å±æ§ï¼æ¤æ¶ï¼éè¿ pageSite å°±å¯ä»¥è·å¾å¤é¨ç UI å ç´ ï¼å¦ä¸ä¸æèåæé®ï¼å·¥å ·æ çï¼å¯¹é¡µé¢è¿è¡å®å¶ã
æ¸ å 8. 为 OutlinePage å建 UI å ç´
public class XMLOutlinePage extends ContentOutlinePage implements IPropertyListener{
public void createControl(Composite parent) {
super.createControl(parent);
this.getTreeViewer().setLabelProvider(new XMLOutlineLabelProvider());
this.getTreeViewer().setContentProvider(new XMLOutlineContentProvider());
this.getTreeViewer().setInput(root);
bar = this.getSite().getActionBars();
bar.getToolBarManager().add(new SortAction());
bar.updateActionBars();
}
}
如何在Eclipse中开发XML可视化编辑器
Eclipse中开发XML可视化编辑器开发说明。
Eclipse XML编辑器
Eclipse 已经包括一个非常简单的 XML 编辑器的源代码,这个编辑器只提供 XML 语法的突出显示。它继承 org.eclipse.ui.editors 包中包括的类,这个包为 Eclipse 平台提供一个标准文本编辑器和基于文件的文档提供程序。这个简单的 XML 编辑器起着代码示例的作用,您可以把它作为自己的 Eclipse XML 插件的基础。它的源代码只能通过 Eclipse 项目向导生成,您需要按下面所描述的自己编译它。
要构建这个基本 XML 编辑器,转至菜单 File => New,然后选择 Project.在项目向导中,选择 Plug-in Development => Plug-in Project.
如果看不到 Plug-in Development 选项,则表示 Eclipse 平台 Runtime Binary 没有 Plug-in 开发环境。请到 eclipse.org 下载页面下载 Eclipse 平台 Plug-in SDK.
单击 Next.给项目命名(如 org.my.eclipse.xmleditor),单击 Next,modbusu源码然后接受屏幕 Plug-in Project Structure 上的缺省值。接下来选择 Create a plug-in project using a code generation 向导,然后选择 Plug-in with an editor 选项。向导会自动生成该 XML 编辑器的源代码。
但仍需编译它。单击 Next,然后在下一屏幕 Simple Plug-in Content 上单击 Finish 选项; 转至 Project 菜单并选择 Rebuild All 来构建该项目。
接下来需要使用 File => Export 菜单创建 editor.jar 文件。请退出 Eclipse,然后复制整个 org.my.eclipse.xmleditor plugin 目录。当您再次运行 Eclipse 时,可将一个 XML 文件添加到您的项目中。请记住这个样本 XML 编辑器未提供任何一种验证或语法检查。
开发者指南如何在MyEclipse中使用 XML编辑器
在MyEclipse中使用XML编辑器提供了丰富的高级功能,包括Web XML编辑,使开发者能够高效地编辑和管理XML文件。当创建Web项目时,MyEclipse会自动在Web-inf文件夹中生成默认的Web.xml文件,您可以通过在Project Explorer中双击文件来打开。使用WebDeployment Descriptor编辑器,开发者可以方便地查看和编辑文件内容,即使在设计视图中进行更改,文件也会自动更新。
MyEclipse Web XML编辑器支持两种编辑模式:设计模式和源模式。设计模式以树形结构展示文件内容,adhoc源码提供直观的导航,并允许开发者在不需要担心语法问题的情况下添加、删除或编辑标记。设计模式的可视化功能确保插入有效标记,避免无效操作。例如,在设计模式中,添加"context-param"参数的操作会遵循文档引用的Schema限制。设计模式下,双击字段即可直接编辑内容,无需切换到源代码模式。
源模式提供直接的XML源代码编辑,与设计模式相比,它更加灵活,但需要开发者具备一定的XML语法知识。源模式下,错误会被标记,内容辅助功能根据当前位置和引用的DTD或架构提供建议,帮助开发者避免错误和提高效率。
在使用XML编辑器时,开发者可以依赖于对DTD或Schema的引用,以确保工作的验证和内容辅助。MyEclipse为普通XML文件提供基本的编辑功能,如语法高亮和验证,但对于不提供DTD或Schema的源码 element文件,某些高级功能可能不可用。
通过以上功能,MyEclipse XML编辑器为开发者提供了强大的工具,使得在Web开发环境中高效管理XML文件成为可能。如果您有任何问题或需要深入了解,欢迎在评论或私信中提问,并期待在官方社群与您交流。
vscode软件是干嘛的
VSCode是一款强大的源代码编辑器。VSCode,全称Visual Studio Code,是一款免费的开源代码编辑器,支持多种编程语言,广泛应用于Web开发、Python开发等领域。它具有强大的功能,如智能代码提示、代码调试、Git控制等,为开发者提供了良好的开发环境。
VSCode的主要功能和特点如下:
1. 多语言支持:VSCode支持多种编程语言,包括但不限于JavaScript、Python、TypeScript等,这使得它成为跨语言开发的理想工具。
2. 强大的编辑功能:VSCode具备智能代码提示、自动完成、语法高亮等编辑功能,大大提高了开发者的编程效率。
3. 丰富的扩展插件:VSCode拥有一个庞大的扩展插件库,开发者可以根据自己的需求安装各种插件,从而扩展编辑器的功能。
4. 代码调试和Git集成:VSCode内置了代码调试工具,方便开发者进行调试。同时,它还完美集成了Git,方便进行版本控制。
VSCode的使用场景:
VSCode广泛应用于Web前端开发、后端开发、Python开发等领域。无论是前端开发中的HTML、CSS、JavaScript,还是后端开发中的Python、PHP等,VSCode都能提供强大的支持。此外,它还支持多种配置文件格式,如JSON、XML等,使得它在各种开发场景中都能发挥出色的作用。
总的来说,VSCode是一款功能强大、使用广泛的源代码编辑器。无论是专业的开发者还是初学者,都可以从中受益。它的开源特性和丰富的扩展插件使得它成为了一个高度可定制化的开发工具,能够满足不同开发者的需求。
ultraedit功能
UltraEdit是一款功能全面且灵活好用的文本编辑器,特别适合源代码编写。它能用作普通文本文件编辑器、批处理文件编辑器,以及C、C++、Java、JSP、HTML、XML等源代码编辑器。支持本地文件或通过FTP远程操作文件。 UltraEdit能对文本文件进行排序,支持自定义排序方式;对进制文件进行字节修改;对文件内容进行整体操作,如格式转换、内容编辑等;统计文本文件或源代码文件的字符、词数量;对项目进行操作。 作为源代码编辑器,UltraEdit提供语法着色,使用户清晰区分代码成分。支持JAVA、PERL、HTML、XML、C#、C/C++、Visual Basic等语言的语法着色,适合直接编写代码。用户可以自定义着色方式,甚至增加不认识的语言进行着色。 在编辑JAVA程序时,UltraEdit能识别关键词并进行着色,区分变量和字符串等。新版本支持自动完成文件配置,实现IDE的自动补全功能。对于HTML、JSP、ASP等文件,UltraEdit能区分scriptlet和HTML代码,并进行着色,提供HTML TAG和特殊字符的全面支持,方便查找和使用。 UltraEdit具备丰富的编辑功能,包括查找、替换、搜索、正则表达式查找、进制编辑、书签定义、滚动到特定行、只读设置、括号匹配、文件信息查看、空格清除、自动缩行、大小写转换、文件格式转换等。 UltraEdit拥有特色功能,如插入颜色、插入当前时间、ASCII码查找、拼写检查、行排序、内容发送至邮箱、文件比较、行选择模式和区域选择等。其强大的编辑功能可以与优秀IDE相媲美,支持通过配置javac和java命令实现直接编译和运行代码。 UltraEdit支持FTP方式工作,用户可以编辑远程服务器上的文件,编辑完成后通过FTP保存,特别适用于JSP、ASP、HTML等文件的编写。 配置编译器和运行指令在高级->工具配置菜单中完成。用户可以自定义命令行输入,指定工作目录,实现编译和运行功能。扩展资料
UltraEdit 是一套功能强大的文本编辑器,可以编辑文本、十六进制、ASCII 码,完全可以取代记事本(如果电脑配置足够强大),内建英文单字检查、C++ 及 VB 指令突显,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。软件附有 HTML 标签颜色显示、搜寻替换以及无限制的还原功能,一般用其来修改EXE 或 DLL 文件。能够满足你一切编辑需要的编辑器。