
- 外文名
- Extensible Markup Language
- 类 型
- 标记语言
- 缩写
- XML(也做文件扩展名)
- 中文名
- 可扩展标记语言
- 其他称呼
- 可扩展置标语言、可扩展标识语言
- 中文
- 可扩标言
-
2019-06-20 09:19:52
1.定义介绍
(1).XML定义
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
(2).JSON定义
JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)体系的行为。这些特性使JSON成为理想的数据交换语言。
JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。
2.XML和JSON优缺点
(1).XML的优缺点
<1>.XML的优点
A.格式统一,符合标准;
B.容易与其他系统进行远程交互,数据共享比较方便。
<2>.XML的缺点
A.XML文件庞大,文件格式复杂,传输占带宽;
B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
D.服务器端和客户端解析XML花费较多的资源和时间。
(2).JSON的优缺点
<1>.JSON的优点:
A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;
D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;
E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
<2>.JSON的缺点
A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;
B.JSON格式目前在Web Service中推广还属于初级阶段。
3.XML和JSON的优缺点对比
(1).可读性方面。
JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。
(2).可扩展性方面。
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
(3).编码难度方面。
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。
(4).解码难度方面。
XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。
(5).流行度方面。
XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。
(6).解析手段方面。
JSON和XML同样拥有丰富的解析手段。
(7).数据体积方面。
JSON相对于XML来讲,数据的体积小,传递的速度更快些。
(8).数据交互方面。
JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。
(9).数据描述方面。
JSON对数据的描述性比XML较差。
(10).传输速度方面。
JSON的速度要远远快于XML。
4.XML与JSON数据格式比较
(1).关于轻量级和重量级
轻量级和重量级是相对来说的,那么XML相对于JSON的重量级体现在哪呢?应该体现在解析上,XML目前设计了两种解析方式:DOM和 SAX。
<1>.DOM
DOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件整个读入内存,这一点上JSON和XML的原理是一样的,但是XML要考虑父节点和子节点,这一点上JSON的解析难度要小很多,因为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;
<2>.SAX
SAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。
所以,JSON和XML的轻/重量级的区别在于:JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;
XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。(2).关于数据格式编码及解析难度
<1>.在编码方面。
虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有可读性。
主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。
<2>.在解析方面。
在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。
实际上,对于大多数Web应用来说,他们根本不需要复杂的XML来传输数据,XML宣称的扩展性在此就很少具有优势,许多Ajax应用甚至直接返回HTML片段来构建动态Web页面。和返回XML并解析它相比,返回HTML片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。同XML或 HTML片段相比,数据交换格式JSON 提供了更好的简单性和灵活性。在Web Serivice应用中,至少就目前来说XML仍有不可动摇的地位。
(3).实例比较
XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。
<1>.用XML表示中国部分省市数据如下:
<?xml version="1.0" encoding="utf-8" ?> <country> <name>中国</name> <province> <name>黑龙江</name> <citys> <city>哈尔滨</city> <city>大庆</city> </citys> </province> <province> <name>广东</name> <citys> <city>广州</city> <city>深圳</city> <city>珠海</city> </citys> </province> <province> <name>台湾</name> <citys> <city>台北</city> <city>高雄</city> </citys> </province> <province> <name>新疆</name> <citys> <city>乌鲁木齐</city> </citys> </province> </country>
<2>.用JSON表示中国部分省市数据如下:
{ name: "中国", provinces: [ { name: "黑龙江", citys: { city: ["哈尔滨", "大庆"] } }, { name: "广东", citys: { city: ["广州", "深圳", "珠海"] } }, { name: "台湾", citys: { city: ["台北", "高雄"] } }, { name: "新疆", citys: { city: ["乌鲁木齐"] } } ] }
编码的可读性来说,XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。JSON读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过JSON的索引country.provinces[0].name就能够读取“黑龙江”这个值。
编码的手写难度来说,XML还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而XML却包含很多重复的标记字符。
更多相关内容 -
maven archetype-catalog.xml 下载
2016-12-16 15:19:28maven archetype-catalog.xml下载地址,需要的需要的可以下载看看,希望给需要的朋友带来帮助,谢谢支持! -
最新archetype-catalog.xml
2016-07-12 16:08:31直接下载archetype-catalog.xml文件,放到本地的apache-maven目录中。 在使用mvn archetype:generate命令时,加上-DarchetypeCatalog=local,以替换网络上的catalog.xml。 参考链接:... -
Notepad++Xml格式化插件和json格式化插件.zip
2017-08-29 20:19:09Notepad++自身没有json和xml格式化工具,为止我们增加对应的格式化工具,打包在一起提供给朋友们下载,具体使用可以查看 http://blog.csdn.net/xs_challenge/article/details/77686481 -
unity3d读取xml插件XMLParser
2014-03-27 00:03:14unity3d读取xml插件XMLParser,用于读取xml文件 -
xsd校验xml工具
2021-12-02 16:04:57xml校验工具,用于校验xml报文是否符合xsd规范xml校验工具
xml校验工具,用于校验xml报文是否符合xsd规范
在线网站也可以校验
https://www.xmlvalidation.com/源码及工具下载地址
https://download.csdn.net/download/qq_21271511/54181672工具使用
选择对应的xsd及xml文件
点击确定后获取校验结果
失败则显示失败原因
代码
主面板
/** * @Title: MainFrame.java * @Package com.agree.mainFrame * @Description: 主面板 * @author lyz * @date 2015-12-5 下午12:13:42 * @version V1.0 */ package xmlValidate.com.agree.main; import java.awt.BorderLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileInputStream; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.filechooser.FileNameExtensionFilter; import xmlValidate.com.agree.xmlUtil.XmlValidate; /** * @ClassName: MainFrame * @Description: 主面板 * @author lyz * @date 2015-12-5 下午12:13:42 * */ public class MainFrame extends JFrame { private static final long serialVersionUID = 1L; private JFrame jf = null; private JPanel jPanel; private JTextField text_xsd = new JTextField("", 20);// xsd文件路径 private JTextField text_xml = new JTextField("", 20);// xml文件路径 // 得到屏幕分辨率 int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; public MainFrame() { jf = new JFrame(); jf.setVisible(true); jf.setTitle("校验工具"); jf.setSize(400, 180); jf.setLocation((width - 400) / 2, (height - 300) / 2); jf.setResizable(false);// 窗体不可调整 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 窗体关闭时关闭应用程序 jPanel = new JPanel(); JLabel label1 = new JLabel("请选择xsd文件"); JButton input = new JButton("浏览"); JLabel label2 = new JLabel("请选择xml文件"); JButton output = new JButton("浏览"); JButton submit = new JButton("确定"); JButton exit = new JButton("退出"); jPanel.add(label1); jPanel.add(text_xsd); jPanel.add(input); jPanel.add(label2); jPanel.add(text_xml); jPanel.add(output); jPanel.add(submit, BorderLayout.SOUTH); jPanel.add(exit, BorderLayout.SOUTH); jf.add(jPanel); input.addActionListener(new MouseAction("input")); output.addActionListener(new MouseAction("output")); submit.addActionListener(new MouseAction("submit")); exit.addActionListener(new MouseAction("exit")); } class MouseAction implements ActionListener { private String onclick = ""; public MouseAction(String str) { onclick = str; } @Override public void actionPerformed(ActionEvent e) { // 文件选择 if ("input".equals(onclick)) { JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setFileFilter(new FileNameExtensionFilter("xsd files", "xsd")); int returnval = chooser.showDialog(jf, "请选择文件"); if (returnval == JFileChooser.APPROVE_OPTION) { String inputFileName = chooser.getSelectedFile().getPath(); text_xsd.setText(inputFileName); } } else if ("output".equals(onclick)) { JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setCurrentDirectory(new File(".")); chooser.setFileFilter(new FileNameExtensionFilter("xml files", "xml")); int returnval = chooser.showDialog(jf, "请选择文件"); if (returnval == JFileChooser.APPROVE_OPTION) { String outputFileName2 = chooser.getSelectedFile().getPath(); text_xml.setText(outputFileName2); } } else if ("submit".equals(onclick)) { System.out.println(text_xsd.getText()); System.out.println(text_xml.getText()); boolean isPassed = false; try { FileInputStream xsd = new FileInputStream(text_xsd.getText()); FileInputStream xml = new FileInputStream(text_xml.getText()); isPassed = XmlValidate.validate(xml, xsd); } catch (Exception err) { JOptionPane.showMessageDialog(null, "校验失败!" + err, "消息", JOptionPane.ERROR_MESSAGE); } if (!"".equals(text_xsd.getText()) && !"".equals(text_xml.getText())) { } if (isPassed) { JOptionPane.showMessageDialog(null, "校验成功!", "消息", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, "校验失败!", "消息", JOptionPane.ERROR_MESSAGE); } } else if ("exit".equals(onclick)) { jf.dispose(); } } } public static void main(String[] args) { MainFrame mf = new MainFrame(); } }
工具类
package xmlValidate.com.agree.xmlUtil; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import javax.xml.XMLConstants; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.xml.sax.SAXException; /** * @author lyz * */ public class XmlValidate { /** * @param isXml * @param isXsd * @return * @throws SAXException * @throws IOException */ public static boolean validate(InputStream isXml, InputStream isXsd) throws SAXException, IOException { boolean flag = false; SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); try { Source xsd = new StreamSource(isXsd); Schema schema = sf.newSchema(xsd); Validator validator = schema.newValidator(); validator.validate(new StreamSource(isXml)); flag = true; } catch (SAXException e) { flag = false; throw new SAXException(e.getMessage()); } catch (IOException e) { flag = false; throw new IOException(e.getMessage()); } finally { if (isXml != null) { isXml.close(); isXml = null; } if (isXsd != null) { isXsd.close(); isXsd = null; } } return flag; } /** * @param isXml * @param isXsd * @return * @throws SAXException * @throws IOException */ public static boolean validate(InputStream isXml, File isXsd) throws SAXException, IOException { boolean flag = false; SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); try { Source xsd = new StreamSource(isXsd); Schema schema = sf.newSchema(xsd); Validator validator = schema.newValidator(); validator.validate(new StreamSource(isXml)); flag = true; } catch (SAXException e) { e.printStackTrace(); flag = false; throw new SAXException(e.getMessage()); } catch (IOException e) { e.printStackTrace(); flag = false; throw new IOException(e.getMessage()); } finally { if (isXml != null) { isXml.close(); isXml = null; } } return flag; } /** * @param isXml * @param xsd * @return * @throws SAXException * @throws IOException */ public static boolean validate(InputStream isXml, URL xsd) throws SAXException, IOException { boolean flag = false; SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); try { Schema schema = sf.newSchema(xsd); Validator validator = schema.newValidator(); validator.validate(new StreamSource(isXml)); flag = true; } catch (SAXException e) { e.printStackTrace(); flag = false; throw new SAXException(e.getMessage()); } catch (IOException e) { e.printStackTrace(); flag = false; throw new IOException(e.getMessage()); } finally { if (isXml != null) { isXml.close(); isXml = null; } } return flag; } /** * @param xml * @param xsd * @return * @throws SAXException * @throws IOException */ public static boolean validate(File xml, File xsd) throws SAXException, IOException { boolean flag = false; SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); try { Schema schema = sf.newSchema(xsd); Validator validator = schema.newValidator(); validator.validate(new StreamSource(xml)); flag = true; } catch (SAXException e) { e.printStackTrace(); flag = false; throw new SAXException(e.getMessage()); } catch (IOException e) { e.printStackTrace(); flag = false; throw new IOException(e.getMessage()); } return flag; } // public static void main(String[] args) // throws JAXBException, DocumentException, UnsupportedEncodingException, IOException { // boolean isPassed = false; // FileInputStream xml = new FileInputStream("C:\\Users\\14435\\Desktop\\ccms.903.001.02.xml"); // FileInputStream xsd = new FileInputStream("C:\\Users\\14435\\Desktop\\ccms.903.001.02.xsd"); // try { // isPassed = validate(xml, xsd); // } catch (SAXException e) { // // } // if (isPassed) { // System.out.println("通过"); // } else { // System.out.println("没有通过"); // } // } }
-
Xml和Json互转工具类
2015-04-17 15:31:29本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。 -
将txt转成voc数据集标准xml(matlab的)
2016-05-25 19:08:05txt转成voc数据集标准xml(matlab的) -
Maven Settings.xml国内资源配置文件 官方绿色版
2016-07-21 22:59:41maven国内资源资源配置以及nexus私服的配置fangs -
【C++】TinyXML读取xml文件用法详解
2022-03-19 15:06:46提示:文章写完后,目录可以自动...TinyXML是个解析库,它由两个头文件(.h文件)和四个CPP文件(.cpp文件)构成,用的时候,只要将(tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlp.提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
TinyXML下载地址:https://sourceforge.net/projects/tinyxml/
官方文档:TinyXMLTinyXML是个解析库,它由两个头文件(.h文件)和四个CPP文件(.cpp文件)构成,用的时候,只要将(tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp)导入工程就可以用它的东西了。如果需要,可以将它做成自己的DLL来调用。
XML文件理解
举一个官方文档《TinyXML Tutorial》中的例子
<?xml version="1.0" ?> <MyApp> <!-- Settings for MyApp --> <Messages> <Welcome>Welcome to MyApp</Welcome> <Farewell>Thank you for using MyApp</Farewell> </Messages> <Windows> <Window name="MainFrame" x="5" y="15" w="400" h="250" /> </Windows> <Connection ip="192.168.0.1" timeout="123.456000" /> </MyApp>
XML是树形结构,有层数之分,其结点分为不同的类别,而TinyXML中针对不同类别定义了不同的类,下面简单介绍一下:(粗体是常用的)
- <?xml version="1.0" ?>,TiXmlDeclaration,声明类
- <MyApp>,TiXmlElement,元素类,该结点是根节点,后续的每个<></>都是一个结点
- <!-- Settings for MyApp -->,TiXmlComment,注释类
- Welcome to MyApp,TiXmlText,文本类,获取元素中的文本
- ,TiXmlAttribute,属性类,name,x,y,w,h都是Window元素的属性
常用的XML类方法使用
接下来我们以一个目标检测的标签文件为例,来读取其中的boundingbox坐标信息。
XML文件:<annotation> <folder>JPEGImages</folder> <filename>409.bmp</filename> <path>E:\JPEGImages\409.bmp</path> <source> <database>Unknown</database> </source> <size> <width>847</width> <height>419</height> <depth>3</depth> </size> <segmented>0</segmented> <object> <name>bad_part</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>512</xmin> <ymin>153</ymin> <xmax>693</xmax> <ymax>325</ymax> </bndbox> </object> <object> <name>bad_part</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>251</xmin> <ymin>251</ymin> <xmax>321</xmax> <ymax>313</ymax> </bndbox> </object> </annotation>
文件中有两个boundingbox
获取bndbox元素下的最大最小坐标:
#include <iostream> //打开xml文件需要加载的头文件 #include "tinystr.h" #include "tinyxml.h" #include <string> #include<typeinfo> using namespace std; int main() { //创建xml文件对象,并读取xml TiXmlDocument doc; doc.LoadFile("409.xml"); //获取xml中根元素,并输出根节点的值,为<annotation> TiXmlElement *root = doc.FirstChildElement(); cout << root->Value() << endl; //获取根节点孩子,输出节点值,输出节点的内容,Text是char* TiXmlElement *child = root->FirstChildElement(); cout << child->Value() << endl; cout << child->GetText() << endl; cout << strlen(child->GetText())<< endl; //cout <<typeid(child->GetText()).name()<< endl; /*目标:找到xmin,xmax,ymin,ymax*/ int xmin1,ymin1,xmax1,ymax1; //从根节点的第一个孩子节点开始遍历 while(child!=NULL) { if(child->ValueTStr() == "object") { TiXmlElement *box = child->FirstChildElement(); while(box->ValueTStr()!="bndbox") { box = box->NextSiblingElement(); } TiXmlElement *xmin = box->FirstChildElement(); xmin1 = atoi(xmin->GetText()); //NextSiblingElement()获得同一层下一个节点 TiXmlElement *ymin = xmin->NextSiblingElement(); ymin1 = atoi(ymin->GetText()); TiXmlElement *xmax = ymin->NextSiblingElement(); xmax1 = atoi(xmax->GetText()); TiXmlElement *ymax = xmax->NextSiblingElement(); ymax1 = atoi(ymax->GetText()); cout<<xmin1<<endl; cout<<ymin1<<endl; cout<<xmax1<<endl; cout<<ymax1<<endl; } child = child->NextSiblingElement(); } /* cout<<xmin1<<endl; cout<<ymin1<<endl; cout<<xmax1<<endl; cout<<ymax1<<endl; */ /*一些其他方法的测试*/ /* //获取兄弟节点中的size节点 TiXmlElement *brother = child->NextSiblingElement("size"); cout << brother->Value() << endl; //cout << typeid(brother->GetText()).name()<< endl; //获取size节点下的属性值,<>中的属性,本例没有属性 //cout <<brother->Attribute("width")<<endl; //找size下面节点width TiXmlElement *brother_child = brother->FirstChildElement(); cout << brother_child->Value() << endl; cout << brother_child->GetText() << endl; //读取到内容,并转为int型,因为项目需要int数据 int width = atoi(brother_child->GetText()); cout << width << endl; */ return 0; }
总结
- 主要是链表相关知识。
- 常用的解析xml的方法。
- char*转int类型用atoi,转float用atof,typeid返回变量类型。
-
阿里云的maven私服的setting.xml 工具
2016-12-27 16:46:34这是我配置阿里云的maven私服的setting.xml文件,MirroOf配置不是*号,是central,这样在项目pom中配置repository依然生效 -
APK AndroidManifest.xml 解密工具
2015-06-01 14:32:58一个解密apk 包中AndroidManifest.xml 的工具,命令行直接使用,生成一个明文的xml 文件。 AndroidManifestConver.exe c:\src.xml c:\dest.xml -
Xml转Json需要的jar包
2014-05-20 20:55:31XML转Json需要的jar包,解压后导入到自己的项目的lib文件夹下就可以运行啦.例子在我的博客中.http://blog.csdn.net/lovesummerforever/article/details/26396465 能完美运行成功.祝您成功运行 -
java 通过模板生成 xml
2014-03-28 11:34:44用java 通过xml模板生成 xml文件 -
codetemplates.xml下载(Eclipse 注释代码模板文件)
2016-03-04 18:01:27codetemplates.xml下载(Eclipse 注释代码模板文件) -
xml工具生成工具_研究当前的XML工具
2020-07-04 02:26:25常用缩略语 API:应用程序编程接口 DITA:达尔文信息键入体系结构 DTD:文档类型定义 ... IDE:集成开发环境 URL:统一资源定位符 W3C:万维网联盟 ... 选择使用XML相关技术的工具时,请...xml工具生成工具
选择使用XML相关技术的工具时,请先确定您的要求。 例如,如果您通常使用XML执行多个任务(编辑,验证等),请考虑具有适当功能的XML IDE。 对于特定任务(比较XML文件或构建站点地图),请考虑针对该任务的更具针对性的工具。
在本文中,研究以下类别以找到适合您需求的XML工具:
- XML网站地图创建者和验证者
- RSS提要生成器
- XML模式生成器
- XML验证器
- XML格式器
- XML编辑器
- XML工具
- XML开源工具
- XML IDE
- XML比较工具
- XQuery工具
- XPath工具
XML网站地图创建者
XML网站地图列出了网站的所有URL。 站点地图将可进行爬网的网站URL告知搜索引擎,以便搜索引擎可以将URL包含在其数据库中。 大多数站点地图创建者都是基于Web的,他们请求网站的URL以及一些参数,例如更改频率和最后修改日期。 请参阅相关信息的链接,所有列出的工具。
现在有几种站点地图生成工具:
- 当您在网站服务器上部署网站时, Google SiteMap Generator会根据网站的更新和流量自动生成网站地图。
- Gsite Crawler创建站点地图。 它是基于Windows的桌面工具。
- 除了可下载的工具外,许多在线应用程序还可以生成站点地图。 两个示例是:
- Sitemaps Builder为Google,HTML和文本URL创建站点地图。
- XML Sitemaps以XML,ROR,Text或HTML格式构建站点地图。
XML网站地图验证器
站点地图验证器用于验证为网站生成的站点地图。 验证程序将检查站点地图是否有效,以供搜索引擎使用。 请参阅相关信息的链接,所有列出的工具。
检查以下站点地图验证器列表:
- Automapit站点地图验证器将验证您的站点地图,以确保被搜索引擎接受。
- Sitemap XML验证程序会检查您的站点地图中是否存在有效的XML代码,以便您可以在将错误提交给搜索引擎之前纠正错误。
- XML Sitemaps验证程序会在通知搜索引擎之前识别出所有需要解决的Sitemap问题。
- 提交之前, 在线商家站点地图检查器会检查sitemap.xml文件中的XML标头是否正确。
RSS提要生成器
RSS新闻源是一种让网站访问者保持最新状态的好方法,可以向您的网站添加最新的内容。 RSS feed生成器在希望浏览新闻站点(例如CNN)头条新闻或了解体育界最新动态的人们中很流行。 请参阅相关信息的链接,所有列出的工具。
网站开发人员可以使用以下工具生成RSS feed:
- IceRocket RSS构建器是一个简单的界面,可让您添加主题,链接和内容来为您的网站创建RSS feed。
- Feedity为网页,新产品或产品创建RSS feed。
- RSSPect设置网站,文档或播客的RSS feed。
XML模式生成器
您可以从XML实例生成XML模式。 请参阅相关信息的链接,所有列出的工具。
可用的工具包括:
- Trang来自ThaiOpenSource (基于命令行的工具),它从XML生成XML模式定义(XSD)。
- XMLBeans是Apache的一种工具,提供多种功能,其中之一是使用inst2xsd(实例到架构工具)生成架构。
- 用于ASP的XML BuildXMLSchema是一个在线XML模式生成器。
XML验证器
您可以根据其架构验证XML实例。 请参阅相关信息的链接,所有列出的工具。
使用以下在线工具之一:
- XMLValidation.com根据文档中声明的XML模式或DTD验证XML文档,或者如果未声明任何模式或DTD则执行语法检查。
- DecisionSoft.com架构验证器将验证单个架构以及实例文档并列出错误。
- W3C XML验证程序是一项使用名称空间URI
http://www.w3.org/2001/XMLSchema
验证架构文档的服务。
XML格式器
XML格式化是经常在XML上执行以使其可读的操作。 大多数桌面XML工具都提供此功能。 要执行XML内容的快速格式而不安装任何XML工具,请尝试以下一种在线服务。 请参阅相关信息的链接,所有列出的工具。
- XMLIndent.com
- X01的在线xml格式化程序
XML编辑器
XML编辑器可以使用元素,属性或纯文本和缩进内容的颜色突出显示来帮助您清楚地解释XML文档。 使用XML编辑器的另一个优点是它们具有面向上下文的选项,例如树视图,该视图使用户可以轻松地遍历XML文档的各个节点。 当您未正确关闭XML标记时,它们还会验证并向您显示警告和错误。 请参阅相关信息的链接,所有列出的工具。
- Xerlin XML Editor (基于Java™的工具)创建并验证XML内容。 该编辑器是具有XSLT支持的开源工具,它还可以针对DTD和模式验证XML。
- Jaxe Editor是另一个基于Java的开源XML编辑器,它支持将内容导出为PDF,使用XSLT进行基于HTML的预览以及多个平台。
- XMLFox是一种免费软件产品,它是一个XML编辑器,带有用于创建格式正确的XML文档和架构的验证器工具。 该编辑器还支持其他XML操作。
XML工具
XSLT转换对于使用样式表将XML的一种形式转换为另一种形式非常有用。 各种各样的工具可以帮助您完成此过程; Tiger XSLT Mapper和Kernow只是两个示例。 请参阅相关信息的链接,所有列出的工具。
Tiger XSLT Mapper是一个工具,新手用户可以轻松地使用它在XML结构之间进行映射。 它会自动创建您可以使用拖放GUI进行编辑的映射。
Kernow是一个Java API,可以以编程方式运行转换。 当开发人员必须使用可视界面重复运行XSLT转换时,Kernow是一个不错的选择。
一些基于Web的XSLT工具也很有用:
- XSLT在线转换
- W3C在线XSLT 2.0服务
偏爱基于浏览器的插件的开发人员可以检查以下有用的XML插件列表:
火狐浏览器
- XSL Results Add-on显示文档的XSL转换结果(通过Saxon-B的XSLT 1.0或XSLT 2.0)。
- XML Developer Toolbar通过浏览器工具栏添加了标准XML工具的使用。
谷歌浏览器
- XML树以用户友好的方式显示XML数据。
- XML Viewer是Google Chrome浏览器的XML查看器。
XML开源工具
对于无法负担企业XML工具成本的用户而言,开源工具很有帮助。 活跃的社区贡献使创建非常好的XML开源工具成为可能。 请参阅相关信息的链接,所有列出的工具。
iXedit XML IDE包括几种XML处理功能:
- DTD验证
- 基于DTD的自动完成
- 用户模板
- XSLT处理
- 逐部分编辑
Rinzo XML编辑器是Eclipse XML编辑器。 它的一些功能是:
- 命名空间支持
- 自动完成标签和属性
- XML验证
该工具还提供了使用Java元素的功能:
- 自动完成的班级名称
- 打开一个类定义
XPontus XML Editor是一个基于Java的开源工具,其中包括以下功能:
- 代码格式和补全
- XSL转换
- DTD和模式生成
- XML验证
XML IDE
XML IDE应用程序执行几乎所有与XML相关的操作。 您可以从具有各种受支持功能的多个IDE中进行选择。 请参阅相关信息的链接,所有列出的工具。
XMLSpy是用于编写,编辑和调试XML,XML模式,XSL / XSLT,XQuery,WSDL和SOAP的XML IDE。 其他功能包括:
- 代码生成器
- 文件转换器
- 调试器
- 探查器
- 支持集成到Visual Studio.NET和Eclipse IDE中
- 数据库导入向导,使您能够从Microsoft®Access®导入数据
XML标记器是一种XML编辑器,它使用同步的表树和文本显示向您显示XML数据的分层视图和表格视图。 该工具可以加载非常大的文档(大小为几百兆甚至几千兆字节)。 其他功能包括:
- 语法突出显示的编辑器
- 表排序
- 自动缩进
- 键入时语法检查
Liquid XML Studio是捆绑在一起的几个XML工具的完整包,它提供以下工具:
- XML模式编辑器
- XML数据绑定代码生成器
- WSDL编辑器
- XML编辑器
- Microsoft Visual Studio集成
- Web服务测试客户端
- XPath表达式构建器
- HTML文档生成
- XSLT编辑器和调试器
- 大文件编辑器
- XML差异-比较XML文件
图1显示了Liquid XML编辑器的预览图 ,其中包含一组用于处理XML内容的面板。 (查看图1的大图 。)
图1. Liquid XML Studio的预览
<oXygen /> XML编辑器是功能齐全的XML IDE,支持一系列与XML相关的操作。 专家XML用户可以利用此工具提供的功能带来的好处。 它的一些功能是:
- 智能XML编辑
- XML验证
- XSL / XSLT支持
- XQuery支持
- XPath支持
- 单源XML发布
- 支持Microsoft Office文档
图2显示了<oXygen /> XML编辑器的预览,其中显示了XML文档的源代码和树视图。 (查看图2的大图 。)
图2. <oXygen />编辑器的预览
Stylus Studio提供以下功能:
- XSLT和XQuery分析器
- 支持EDI
- 企业网络服务工具
- XML管道
- XSLT 2.0和XQuery 1.0中的XML模式感知
- XML发布工具
Microsoft的XML记事本可帮助开发人员创建XML文档。 它是一个免费工具,其中包括XMLDiff工具,可用于比较两个XML文件。 界面简单易用。 该工具可在.Net平台上运行。 该工具的功能是:
- 树视图与节点文本视图同步
- 复制和移动文本时提供命名空间支持
- 树形视图和文本视图中的增量搜索
- 进行更改时的拖放支持
- 无限撤消和重做编辑操作
- 搜索对正则表达式和XPath的支持
- 快速加载高达3MB的文档
- 即时XML模式验证
- 基于预期的元素和属性以及枚举的简单类型值的Intellisense
- 支持日期,dateTime,时间数据类型以及其他类型(例如颜色)的自定义编辑器
- 内置HTML查看器
- 支持XInclude
图3显示了XML记事本的预览,带有XML文件的树形视图及其错误面板。 (查看图3的大图 。)
图3. XML记事本的预览
XML复制编辑器是一种快速,有效的XML编辑器。 标签功能使您可以同时编辑多个文件。 其他功能包括:
- DTD / XML模式/ RELAX NG验证
- XSLT和XPath支持
- 精美印刷和语法突出显示
- 折叠和标签完成
- Microsoft Word文档的无损导入和导出
- 支持XHTML,XSL,DocBook和文本编码倡议(TEI)
firstobject XML编辑器是免费的XML编辑器。 从XML文档内容显示的XML树可以直接进行编辑,以方便遍历。 可以将大文件加载到该工具中,以便于操作。 其特点是:
- 快速,便携式且基于CMarkup构建
- 不需要Java技术或MSXML
- 自动换行
- 基于MSXML的DTD验证
- 转到行
- 显示XPath
- 标签式文件编辑
- C ++代码生成
XRay XML Editor是免费的XML IDE。 该工具可在您键入时验证XML文档。 它具有对W3C标准的内置支持。 它还具有HTML查看器,可预览使用XML构建的网页。 您可以创建三种类型的架构,包括XSD,DTD和外部数据表示(XDR)。 该工具的其他功能包括:
- 实时XSLT处理
- 实时模式验证
- 有关XML的集成在线教程
XMLSpear是一个免费的基于Java的XML编辑器,可用于许多平台。 它具有高级功能,例如交互式模式解析,扩展的XPath面板等。 XML以三种不同的格式显示,包括树表,元素视图和源视图。 XMLSpear可作为Java Web Start软件或独立应用程序使用。 其他功能包括:
- 支持XPath和XSLT
- 能够从模式生成完整的XML文档
- 多种格式的编码支持
- 集成的文本和HTML插件
- 键入时针对架构或DTD进行实时验证
- 从XML实例生成模式
- 操纵节点的树编辑器
XMLmind是基于Java技术的多功能XML编辑器,可用于多个平台。 比新手用户更适合经验丰富的专业人员。 它提供了一种编辑XML文档的创新方法,并且需要Java平台支持。 XMLmind的功能包括:
- 将XML文档转换为HTML帮助文件,PDF,Eclipse帮助文件和许多其他格式
- 包含DITA转换器
- 支持DocBook,JavaDoc和XHTML以及它们的内置模板
- 支持MathML文档创建
- 可编辑的命令
- 集成的XML解析器和XSLT引擎
ElfData XML Editor是Mac OS用户的工具。 此XML IDE提供Unicode支持,无论是否带有DTD,都可以检查XML文档的格式是否正确。 树模式和源模式是两种可用的视图模式。 拖放支持使您能够拖放XML元素。 两种模式可以促进搜索:源查找和树查找模式。 该工具的其他功能包括:
- 符合XML 1.0
- 类似于Mac的用户界面
- 详细的错误消息,有助于调试
- “发送到浏览器”选项,使您可以在浏览器中预览文档
- 使用DTD将页面另存为XHTML的选项
XMetaL看起来像一个文字处理器。 与大多数XML IDE一样,它可以验证XML文档并支持架构,DTD和XInclude。 其他功能包括:
- 拼写检查和自动更正
- 支持Web帮助输出
- 能够将XML文档转换为其他格式,例如PDF,HTML等
- XMetal连接器与内容管理系统(CMS)和源控制系统(如SVN)集成
- Unicode支持可创建多种语言的XML文档
- DITA支持具有诸如可视化,面向主题的用户界面等功能,用于创作DITA内容
XML比较工具
开发人员,编辑人员和编写人员经常需要比较XML文档的两个版本以跟踪更改。 尽管可以使用许多文本比较工具,但是专有的XML比较工具具有XML意识,因此对于许多操作都是有效的。 请参阅相关信息的链接,所有列出的工具。
<oXygen /> XML Diff&Merge实用程序可以比较文件,目录和基于ZIP的存档。 当您将源文档和目标文档加载到此工具中时,差异将通过颜色显示,并且您可以编辑和移动源文件和目标文件中的更改。 它具有许多内置的比较算法,并具有根据文档内容和大小自动选择算法的能力。 它可以进行单词级和字符级的比较。 比较目录和归档文件时,可以选择基于以下参数:
- 时间戳记
- 内容
- 二进制比较
Liquid XMLDiff具有许多特定于XML的选项,例如删除空格,注释和处理器指令。 该工具足够先进,可以预测属性和元素是新的,已删除的还是已移动的。 Liquid XML Studio的设计人员和开发人员版本中提供了此工具。
ExamXML是强大的工具,可以直观地比较和合并XML文档之间的差异。 用于比较的输入XML可以来自文件,也可以来自数据库。 ExamXML还可以比较并保存XML文档的一部分; 您还可以导入和导出MicrosoftExcel®文档。 ExamXML可用于多种版本的MicrosoftWindows®。 该工具的其他功能包括:
- 根据DTD / XML模式验证XML
- 日期和数字的标准化
- 拖放支持
- 以树状视图显示的XML文档
DeltaXML使您能够搜索,比较,合并和同步对XML文档的更改。 它具有Java API支持,从而有助于XML文档的编程比较。 它还具有处理大文件的能力。 该工具可以输出带有比较结果的增量文件。 您可以直接显示此增量文件,也可以使用XSL。 您可以使用其他XML工具来处理增量文件。 DeltaXML Sync工具可以比较三个XML文档并呈现差异。 除了XML比较功能外,它还有一些特定于格式的工具:
- DeltaXML DITA比较
- DeltaXML DocBook比较
- DeltaXML ODT比较
- DeltaXML ODT合并
XQuery工具
对于高级XML用户,XQuery在从大型XML文档中查询和提取内容时非常有用。 XQuery特定工具可帮助您利用XQuery的功能,并使您能够使用高级功能,例如映射,调试和性能分析。 他们提供的一些有用功能包括验证,自动完成和预览。 请参阅相关信息的链接,所有列出的工具。
XMLSpy XQuery编辑器为XQuery提供语法高亮和上下文相关菜单。 它的自动编码完成功能使您可以轻松创建XQuery文档。 它还支持针对支持XML的数据库开发XQuery。 其他功能包括:
- 错误隔离
- 简化调试
- 增强的代码性能
- 进阶文字检视
Stylus Studio XQuery编辑器具有集成的XQuery编辑器,其功能广泛,包括智能代码检测,代码完成,元素构造函数,函数,路径表达式等。 它基于开放的XQuery体系结构,并支持Saxon XQuery处理器。 XQuery源树窗口支持拖放功能,以及有关源文件的有用符号和图标。 其他功能包括:
- 创建XQuery场景
- XQuery预览
- XQuery结果预览到XQuery表达式的映射
用于Eclipse的XQuery开发工具可帮助在Eclipse中创建,调试和执行XQuery。 这些工具还提供:
- 支持XQuery更新和脚本扩展
- 代码完成和代码模板
- 语义检查和快速修复
- 输入时进行验证
XPath工具
XPath专用工具在可视化XPath评估结果时很有用,并且可以帮助您构造和验证XPath表达式。 这些工具提供了两个有用的选项,包括调试XPath,自动完成和使用XPath搜索数据库。 请参阅相关信息的链接,所有列出的工具。
SketchPath是XPath编辑器和XML分析与测试工具。 它提供了一个IDE,用于针对XML文档开发和测试XPath表达式。 它使用.NET Framework进行XPath 1.0评估,并使用Saxon.NET进行XPath 2.0。 其他功能包括:
- 在表达式中使用XPath变量
- XPath功能助手
- 内置步进跟踪器和调试器
- 表达式的语法着色
XPath Visualizer是一个免费的Microsoft Windows工具,可对XML文档运行XPath查询并可视化结果。 输入文件可以来自文件系统或URL,也可以作为文本粘贴到工具中。 在此工具中,键入整个XPath查询。 该工具的其他功能包括:
- 自动检测和显示XML名称空间
- XPath查询验证
- 自动将默认XML名称空间添加到查询表达式中,并可以选择从任何文档中删除XML名称空间
还提供基于Web的XPath工具,包括:
- XPath查询表达工具 (XMLME.com)
- 简单的在线XPath测试仪
- XSLT Tryit编辑器 (W3Schools.com)
结论
许多可用的工具都支持与XML相关的技术。 作为XML用户,您必须分析需求并选择适当的工具。 例如,如果需要许多复杂的操作,则可以选择XML IDE以具有更多功能,例如编辑,验证和其他功能。 对于非常特定的任务,例如比较XML文件,则可以选择一个排他的比较工具。
翻译自: https://www.ibm.com/developerworks/opensource/library/x-xmltools/index.html
xml工具生成工具
-
XML——XML介绍和基本语法
2018-08-30 10:47:231.XML历史 gml(1969)->sgml(1985)->html(1993)->xml(1998) 1969 gml(通用标记语言),主要目的是要在不同的机器之间进行通信的数据规范 1985 sgml(标准通用标记语言) 1993 html... -
xml格式详解
2019-04-29 17:35:06一、xml基础详解: 1、概述: xml:即可扩展标记语言,xml是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者。xml是... -
xml文件格式
2021-10-02 20:04:38xml文件分为文件头和文件体 文件头 文件头:由xml生命和dtd文件类型声明组成。其中dtd文件类型声明是可以省略的。 <?xml version="1.0" encoding="gb2312"?> 文件体 文件体中包含的是文件的内容,xml元素是... -
【XML】使用javax.xml.bind包实现bean-xml互转
2019-03-29 10:55:59JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例... -
Eclipse archetype-catalog.xml
2018-07-11 14:53:29Eclipse Maven 创建Web 项目报错 Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webap -
ehcache.xml 文件
2013-01-02 10:05:42ehcache.xml 文件 -
python读写xml文件
2021-07-30 16:51:221.python创建xml 使用xml.etree.ElementTree来操作xml 创建节点:root = ET.Element('root', attribute), 其中, attribute是属性字典,需要属性时可以添加 创建文档:tree = ET.ElementTree(root) 设置文本... -
目标检测: 数据集转换txt转为xml格式
2022-03-31 16:27:00目标检测: 数据集转换txt转为xml格式 -
c++操作xml文件
2019-06-09 12:02:11我们使用的是tinyxml,有个小巧的库,可以生成和解析XML文档。免费开源,可以直接将源码加到项目中,适合多种平台。他的官方文档为http://sourceforge.net/projects/tinyxml/,可以直接从上面下载相关资源。下载好... -
XML文件结构和基本语法
2020-09-24 10:53:31XML文件结构和基本语法 XML文件的结构性内容:节点关系,属性内容等。 XML最基本的单位:元素,它由开始标记、属性和结束标记组成。 XML文件示例 例1:使用‘记事本’创建xml文件 在‘记事本’中输入以下内容: &... -
XML简介
2019-09-08 23:23:32什么是 XML XML 是可扩展标记语言(EXtensible Markup Language)。 XML 是一种很像HTML的标记语言。 XML 的设计宗旨是传输数据,而不是显示数据。 XML 标签没有被预定义。您需要自行定义标签。 XML 被设计为具有... -
(二)Python创建、修改、保存XML文件——xml.etree.ElementTree模块
2020-06-10 09:35:32XML tree and elements XML是一种固有的分层数据格式,最自然的表示方法是使用树。ET有两个类为此目的—ElementTree表示整个XML文档为树,元素表示此树中的单个节点。与整个文档的交互(读取和写入文件)通常是在... -
xml与json互相转换
2019-05-21 15:56:21} /** * xml转json * * @param xml * @return */ public String xmlToJson(String xml) { try { Document document = DocumentHelper.parseText(xml); Element rootElement = document.getRootElement(); JSON json... -
Notepad++ 安装XML Tools插件格式化XML文件
2022-02-06 20:37:48Notepad++ 安装XML Tools插件格式化XML文件Ritchie_Li2022.02.06 20:37:12字数 183阅读 0编辑文章1. 打开Notepad++ 软件2. 选择插件,选择“插件管理” 3. 搜索 XML Tools,找到该插件后,勾选该文件,点击“安装...