首页技术xml文件注释?xml如何注释一段代码

xml文件注释?xml如何注释一段代码

编程之家2026-06-16605次浏览

很多朋友对于xml文件注释和xml如何注释一段代码不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

xml文件注释?xml如何注释一段代码

xml语言是什么东西

所谓的xml,就是eXtensible Markup Language,翻译成中文就是“可扩展标识语言“,在国内很多人理解xml为html的简单扩展,这实际上是一种误解。尽管xml同html关系非常密切。

XML与SGML、HTML的关系。

SGML、HTML是XML的先驱。SGML是指“通用标识语言标准”(Standard Generalized Markup Language),它是国际上定义电子文件结构和内容描述的标准,是一种非常复杂的文档的结构,主要用于大量高度结构化数据的防卫区和其他各种工业领域,利于分类和索引。同XML相比,定义的功能很强大,缺点是它不适用于Web数据描述,而且SGML软件价格非常价格昂贵。 HTML相信大家都比较熟悉,即“HyperText Markup Language”(超文本标识语言),它的优点是比较适合web页面的开发。但它有一个缺点是标记相对少,只有固定的标记集如<p>.<strong>等。缺少sgml的柔性和适应性。不能支持特定领域的标记语言,如对数学、化学、音乐等领域的表示支持较少。举个例子来说,开发者很难在web pape上表示数学公式、化学分子式和乐谱。

Xml结合了sgml和html的优点并消除其缺点。Xml仍然被认为是一种sgml语言。比sgml要简单,但能实现sgml的大部分的功能。1996年的夏天,Sun Microssystem的John Bosak开始开发W3C SGML工作组(现在称为xml工作组)。他们的目标是创建一种sgml,使其在Web中,既能利用Sgml的长处,又保留html的简单性。现在目标基本达到。

二、Xml的发展。

在专业领域中,出现了Web标记语言的许多项目,著名的有CML—化学标记语言,由Peter Murray_Rust开发,同时开发了第一个通用xml浏览器Jumbo.在数学方面,包括IBM公司再内都在致力开发MathML 1997年四月,出版了xll的第一个版本。当xll完整实现时,将比html和当前浏览器所达到的链接水平更复杂,更强大。1997年8月,Microsoft公司和Inso公司引入xsl.由于xml是纯结构和语义的,需要描述单个元素格式方法。可以使用html的CSS;另一种方案是xsl. 1998年1月,microsoft公司出版发行了msxsl程序。可以利用xsl表和xml文档创建能被IE4识别的html页面。1998年2月,W3C发布了xml1.0的正式版本。最近一年多来,由于网络应用的飞速发展,xml的发展非常迅猛。出现了DOM(Document Object Model),XSLT(XSL Transformation)等新名词,xml的应用软件也有了飞速的发展,Microsoft、IBM、Breeze、Stilo等公司纷纷推出了自己的或解析器,或开发平台。在MicrosoftIBM、HP等大公司的推动下,目前有两个著名的xml的研究组织,分别是biztalk.com和oasis.org,由他们向W3C提出标准的建议。其中biztalk是有Microsoft牵头组织的,有趣的是Microsoft公司同时参加了oaisis,不过不同于IBM、HP等著名大公司,他的年费只交10万美元,用Microsoft发言人的话就是“一切视oasis的发展而定!“,言下之意就是如果oasis制定的标准抵触Microsoft的应用,一场标准大战不可避免。

xml文件注释?xml如何注释一段代码

什么是XML

首先XML是一种元标记语言,所谓“元标记”就是开发者可以根据自己的需要定义自己的标记,比如开发者可以定义如下标记<book><name>,任何满足xml命名规则的名称都可以标记,这就为不同的应用程序打开了的大门。HTML是一种预定义标记语言,它只认识诸如<html>,<p>等已经定义的标记,对于用户自己定义的标记是不认识的。第二xml是一种语义/结构化语言。它描述了文档的结构和语义。举个例子,在和html中,要描述一本书,可以如下表示:

<dt> book name

<dd> author_name<ul><li>publisher_name;;;;<li>isbn_number<ul>在xml中,同样的数据表示为<book><title>book name</title><author>author name</author)<publisher> publisher name</publisher><isbn>isbn_number</isbn></book>从上面的对比,可以看出,xml的文档是有明确语义并且是结构化的。 XML是一种通用的数据格式从低级的角度看,xml是一种简单的数据格式,是纯100%的ASCII文本,而ASCII的抗破坏能力是很强的。不象压缩数据和java对象,只要破坏一个数据文件数据就不可阅读。从高级的角度看,是一种自描述语言。

XML可利用于数据交换主要是因为XML表示的信息独立于平台的,这里的平台即可以理解为不同的应用程序也可以理解为不同的操作系统;它描述了一种规范,利用它Microsoft的word文档可以和Adobe的Acrobat交换信息,可以和数据库交换信息。

XML表示的结构化数据。

xml文件注释?xml如何注释一段代码

对于大型复杂的文档,xml是一种理想语言,不仅允许指定文档中的词汇,还允许指定元素之间的关系。比如可以规定一个author元素必须有一个name子元素。可以规定企业的业务必须有包括什么子业务。

XML文档。 XML文档有DTD和XML文本组成,所谓DTD(Document Type Definition),简单的说就是一组标记符的语法规则.,表明XML文本是怎么样组织的,比如DTD可以表示一个<book>必须有一个子标记<author>,可以有或者没有子标记<pages>等等。当然一个简单的XML文本可以没有DTD。下面是一个简单的xml文本。<? Xml version=”1.0” standalone=”yes”><book> haha</book>其中以?开始并结尾的是进程说明。Standalone表示外围设备。这里外围设备可以理解为该XML文本没有应用其他的文件。因为XML文件可以外部应用DTD等外部数据。

XML涉及的一些技术。

XSL和CSS。

通过前面的介绍可以知道,XML可以定义信息的内容,却没有定义信息该如何表达,这实际上就是XML的长处,它把内容和形式分离了,这样同一个内容可以有不同的表达,相信随着XML应用的提高,那种“建议你使用800x600分辨率“的会消失。而XML内容的表达就是通过XSL(XML Style Language)和CSS(Cascading Style Sheets层叠样式表)来实现。拿前一个例子来说,可以为该xml文档定义的样式表(XSL)如下:<xsl><rule><root/><H1><children/></H1></rule><xsl>这就是一个简单的 XSL文件,利用msxsl可以生成html文件。如下<h1> haha</hi>至于CSS,在HTML文件中就已经有它的影子了,例如 H1这就是一段简单的CSS的文本。

XML Schema尽管DTD给标记的使用加了限制,但是对于XML的自动处理却还需要更加严格更全面的工具。比如DTD不能保证一个标记的某个属性的值必须不为负值,于是出现了XML Schema,由于XML Schema(不同于DTD)本身也是一个正规的XML文档,因此开发者可以使用相同的工具处理其同其他的XML的信息交换。最初XML Schema由Microsoft提出,W3C的专家们经过充分讨论和论证,在1999年的2月,发布了一个需求定义,说明Schema必须符合的要求,5月,W3C完成并发布了Schema的定义。目前,IE5中的XML解析器能够根据文档类型定义(DTD)或XML Schema解析XML

关于DOM DOM即Document Object Model,它把XML文档的内容实现为一个对象模型,简单的说就是应用程序如何访问XML文档,W3C的DOM Level 1定义了如何实现属性、方法、事件等。

关于XSLT XSLT即XML Stylesheet Language Transformation.在写本文时正式标准还没有正式形成,在1999年的11月通过了《XSLT》。XSLT是一种用来进行XML文档间相互转化的语言。简单的说,我们知道不同的开发者对于各自的应用会用不同的XML文档,利用XSLT我们可以从一个已经定义的XML文档抽取我们需要的数据,组成不同的形式,可以是XML, HTML和各种不同的SCRIPT。

关于Xpointer和Xlinks

类似于HTML中的Hyper Link. Xpointer和Xlink用于联结其他的XML文档和其他XML文档中的部分,其中Xpointer相当于HTML中用于定位HTML文档子内容的锚!不过其联结水平更强大。比如,在bookstore中,可以定位到有一个作者叫金庸,书中有四大恶人的那本书,在HTML中,这是不可能实现的。

当然,XML的发展促使了许多的新技术的出现,其他的还有RDF、Xfrom等等,其中的大部分W3C只是给出了建议,还没有形成正式的标准,有些内容甚至还处于讨论阶段。我们将密切注视着方面内容的变化。

XML框架

所谓框架即Framework。XML是一个通用的标准。它不属于个人,认证它的也不是一家公司,而是W3C。那么为什么那么多的大公司纷纷趋指如鹜呢?各家公司互相竞争的是它的framework,是它的Schema. XML framework是驾驭XML文件的结构,是一种高层次的结构控制。利用XML framework,可以把商业逻辑(business logic)分离出来,实现数据与计算的分离。目前著名的framework有Microsoft的Biztalk以及联合国(UN/CEFACT)和OASIS联合于99年底推出了EBXML动议。相信在不久的将来会有许多的Framwork.其中的一个问题就是在W3C中关于XML的很多东西还处于建议的时候,就推出framework,是不是一种冒险。不过,互联网的发展似乎就是这样,关于framwwork的发展,我们将拭目以待

xml,注释错误, -- >

首先,执行“<!--”,表示接下来的内容都是注释,然后“XML注释内容-->”及以下内容全部当做注释来解析,直到遇到下一个正确的注释(<!-- xxx-->),其中“<!-- xxx”仍然当做注释来解析,而后面的“-->”,就被当做前一个注释(<!--XML注释内容-->)的关闭标记来解析。

如果后面没有其它注释,则系统将结束文档的解析并报错。

错误内容:这可能导致前面的标记不被正确的关闭,或后面的标记未被开启,也有可能导致原本应该存在的内容变得不存在,但一般不会导致注释的关闭标记发生错误。

如果你有一个可以进行代码着色的文本编辑器(如Notepad++),那么你很容易看出问题的所在。这类文本编辑器可以帮助你及时的找出你代码中的错误,使开发更加快速、简单。

希望我的回答能帮助你,谢谢!

android中怎么解析复杂的xml文件

本文主要讲解Android开发中如何对XML文件的解析,由于XML文件具有与平台无关,广泛应用于数据通信中,因此解析XML文件就显得很有意义。Android对XML文件解析的方法主要有3种。通常有三种方式:DOM、SAX和PULL,下面就分别针对这三种方式来进行讨论。

文件内容如下所示:

那么就是要对此XML文件做解析。下面我们就分别用DOM,SAX和PULL三种方式,分别对此XML文件做解析。

DOM方式

DOM方式解析xml是先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据。由DOM解析的方式可以知道,如果XML文件很大的时候,处理效率就会变得比较低,这也是DOM方式的一个缺点。

现在我们来解析上文中提到的有关天气预报信息相关的xml文件。什么是解析呢?说的通俗一点,就是将这个带标签的XML文件识别出来,并抽取一些相关的,对我们有用的信息来给我们使用。那在这个文件里,时间,天气,温度,以及图标对我们来说是需要得到的。我们要对其做解析。

解析的具体思路是:

1.将XML文件加载进来。

2.获取文档的根节点

3.获取文档根节点中所有子节点的列表

4.获取子节点列表中需要读取的节点信息

根据这4个步骤,我们进行开发:

首先就是如何加载XML文件,假设此文件来源于网络。

SAX方式

SAX是Simple API for XML的缩写。是一个包也可以看成是一些接口。

相比于DOM而言SAX是一种速度更快,更有效,占用内存更少的解析XML文件的方法。它是逐行扫描,可以做到边扫描边解析,因此SAX可以在解析文档的任意时刻停止解析。非常适用于Android等移动设备。

SAX是基于事件驱动的。所谓事件驱动就是说,它不用解析完整个文档,在按内容顺序解析文档过程中,SAX会判断当前读到的字符是否符合XML文件语法中的某部分。如果符合某部分,则会触发事件。所谓触发事件,就是调用一些回调方法。当然android的事件机制是基于回调方法的,在用SAX解析xml文档时候,在读取到文档开始和结束标签时候就会回调一个事件,在读取到其他节点与内容时候也会回调一个事件。在SAX接口中,事件源是org.xml.sax包中的XMLReader,它通过parser()方法来解析XML文档,并产生事件。事件处理器是org.xml.sax包中ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口。

这四个接口的详细说明如下:

事件处理器名称

事件处理器处理的事件

XMLReader注册方法

ContentHander

XML文档的开始与结束,

XML文档标签的开始与结束,接收字符数据,跳过实体,接收元素内容中可忽略的空白等。

setContentHandler(ContentHandler h)

DTDHander

处理DTD解析时产生的相应事件

setDTDHandler(DTDHandler h)

ErrorHandler

处理XML文档时产生的错误

setErrorHandler(ErrorHandler h)

EntityResolver

处理外部实体

setEntityResolver(EntityResolver e)

我们用来做内容解析的回调方法一般都定义在ContentHandler接口中。

ContentHandler接口常用的方法:

startDocument()

当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。

endDocument()

当文档结束的时候,调用这个方法,可以在其中做一些善后的工作。

startElement(String namespaceURI, String localName,String qName, Attributes atts)

当读到开始标签的时候,会调用这个方法。namespaceURI就是命名空间,localName是不带命名空间前缀的标签名,qName是带命名空间前缀的标签名。通过atts可以得到所有的属性名和相应的值。

endElement(String uri, String localName, String name)

在遇到结束标签的时候,调用这个方法。

characters(char[] ch, int start, int length)

这个方法用来处理在XML文件中读到的内容。例如:<high data="30"/>主要目的是获取high标签中的值。

第一个参数用于存放文件的内容,后面两个参数是读到的字符串在这个数组中的起始位置和长度,使用new String(ch,start,length)就可以获取内容。

注意:

SAX的一个重要特点就是它的流式处理,当遇到一个标签的时候,它并不会纪录下之前所碰到的标签,即在startElement()方法中,所有能够知道的信息,就是标签的名字和属性,至于标签的嵌套结构,上层标签的名字,是否有子元属等等其它与结构相关的信息,都是不知道的,都需要你的程序来完成。这使得SAX在编程处理上没有DOM方便。

现在我们截取一段XML文件来做解析,其调用方法是这样的:

<?xml version="1.0"?>----------> startDocument()

<weather>----------> startElement

<forecast_information>----------> startElement

<city>----------> startElement

beijing----------> characters

</city>----------> endElement

</forecast_information>----------> endElement

</weather>----------> endElement

文档结束----------> endDocument()

SAX的解析步骤:

首先需要注意的是:

SAX还为其制定了一个Helper类:DefaultHandler它实现了ContentHandler这个接口,但是其所有的方法体都为空,在实现的时候,你只需要继承这个类,然后重载相应的方法即可。

使用SAX解析XML文件一般有以下五个步骤:

1、创建一个SAXParserFactory对象;

2、调用SAXParserFactory中的newSAXParser方法创建一个SAXParser对象;

3、然后在调用SAXParser中的getXMLReader方法获取一个XMLReader对象;

4、实例化一个DefaultHandler对象

5、连接事件源对象XMLReader到事件处理类DefaultHandler中

6、调用XMLReader的parse方法从输入源中获取到的xml数据

7、通过DefaultHandler返回我们需要的数据集合。

我们仍然来解析上述那个天气预报的XML文件。

编写代码如下:

[java] view plaincopy

mySAX.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v){

try{

String url="";

DefaultHttpClient client= new DefaultHttpClient();

HttpUriRequest req= new HttpGet(url);

HttpResponse resp= client.execute(req);

HttpEntity ent= resp.getEntity();

InputStream stream= ent.getContent();//将文件导入流,因此用InputStream

SAXParserFactory saxFactory= SAXParserFactory.newInstance();//获取一个对象

SAXParser saxParser= saxFactory.newSAXParser();//利用获取到的对象创建一个解析器

XMLContentHandler handler= new XMLContentHandler();//设置defaultHandler

saxParser.parse(stream, handler);//进行解析

stream.close();//关闭流

/*XMLReader xmlReader= saxFactory.newSAXParser().getXMLReader();//获取一个XMLReader

xmlReader.setContentHandler(handler);

xmlReader.parse(new InputSource(stream));

stream.close();*/

}catch(Exception e){

e.printStackTrace();

}

}

});

}

public class XMLContentHandler extends DefaultHandler{

private static final String TAG="XMLContentHandler";

@Override

public void characters(char[] ch, int start, int length)

throws SAXException{

Log.i(TAG,"解析内容:"+new String(ch,start,length));

}

@Override

public void endDocument() throws SAXException{

super.endDocument();

Log.i(TAG,"文档解析完毕。");

}

@Override

public void endElement(String uri, String localName, String qName)

throws SAXException{

Log.i(TAG, localName+"解析完毕");

}

@Override

public void startDocument() throws SAXException{

Log.i(TAG,"开始解析......");

}

@Override

public void startElement(String uri, String localName, String qName,

Attributes attributes) throws SAXException{

Log.i(TAG,"解析元素:"+localName);

if(localName.equals("high")){

Log.i(TAG,"解析元素:"+localName);

i++;

if(i==2){

highestTmp.setText(String.valueOf((Integer.parseInt(attributes.getValue(0))-32)*5/9));

}

}

}

}

上面的那段注释:

[java] view plaincopy

/*XMLReader xmlReader=saxFactory.newSAXParser().getXMLReader();//获取一个XMLReader

xmlReader.setContentHandler(handler);

xmlReader.parse(newInputSource(stream));

stream.close();*/

是用XMLReader来做解析的另外一种方法。效果是一样的。这里可以传流,也可以传一个字符串,如下所示:是传字符串。

[java] view plaincopy

xmlReader.parse(new InputSource(new StringReader(xmlStr)));

PULL方式

除了可以使用 SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器的运行方式与 SAX解析器相似。它也是事件触发的。Pull解析方式让应用程序完全控制文档该怎么样被解析。比如开始和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。通过Parser.getEventType()方法来取得事件的代码值,解析是在开始时就完成了大部分处理。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。

Pull解析是一个遍历文档的过程,每次调用next(),nextTag(), nextToken()和nextText()都会向前推进文档,并使Parser停留在某些事件上面,但是不能倒退。然后把文档设置给Parser。

Android中对Pull方法提供了支持的API,主要是

org.xmlpull.v1.XmlPullParser;

org.xmlpull.v1.XmlPullParserFactory;

二个类,其中主要使用的是XmlPullParser,XmlPullParserFactory是一个工厂,用于构建XmlPullParser对象。

应用程序通过调用XmlPullParser.next()等方法来产生Event,然后再处理Event。

我们仍然拿上述天气预报的XML文件的一部分来做例子。

例如:需要解析的XML文件是:

[java] view plaincopy

<forecast_conditions>

<day_of_week data="周三"/>

<low data="22"/>

<high data="29"/>

<icon data="/ig/images/weather/chance_of_rain.gif"/>

<condition data="可能有雨"/>

</forecast_conditions>

这部分XML文件中day_of_week,low,high等是TAG,data是ATTRIBUTEA。当然,如果有<></>夹在开始和结束符号之间的部分,则为TXET。

要想解析文档先要构建一个XmlPullParser对象。

[java] view plaincopy

final XmlPullParserFactory factory= XmlPullParserFactory.newInstance();

factory.setNamespaceAware(true);

final XmlPullParser parser= factory.newPullParser();

parser.setInput(new StringReader("xmlStr");

这里的xmlStr就是上边的XML文件。

此时,文档刚被初始化,所以它应该位于文档的开始,事件为START_DOCUMENT,可以通过XmlPullParser.getEventType()来获取。然后调用next()会产生

START_TAG,这个事件告诉应用程序一个标签已经开始了,调用getName()会返回" day_of_week";若有TEXT,则再next()会产生TEXT事件,调用getText()会返回TEXT,由于此处没有,所以再next(),会产生END_TAG,这个告诉你一个标签已经处理完了,再next()直到最后处理完TAG,会产生END_DOCUMENT,它告诉你整个文档已经处理完成了。除了next()外,nextToken()也可以使用,只不过它会返回更加详细的事件,比如COMMENT, CDSECT, DOCDECL, ENTITY等等非常详细的信息。如果程序得到比较底层的信息,可以用nextToken()来驱动并处理详细的事件。需要注意一点的是TEXT事件是有可能返回空白的White Spaces比如换行符或空格等。

nextTag()--会忽略White Spaces,如果可以确定下一个是START_TAG或END_TAG,就可以调用nextTag()直接跳过去。通常它有二个用处:当START_TAG时,如果能确定这个TAG含有子TAG,那么就可以调用nextTag()产生子标签的START_TAG事件;当END_TAG时,如果确定不是文档结尾,就可以调用nextTag()产生下一个标签的START_TAG。在这二种情况下如果用next()会有TEXT事件,但返回的是换行符或空白符。

nextText()--只能在START_TAG时调用。当下一个元素是TEXT时,TEXT的内容会返回;当下一个元素是END_TAG时,也就是说这个标签的内容为空,那么空字串返回;这个方法返回后,Parser会停在END_TAG上。

小结一下,如果在一个XML文档中我们只需要前面一部分数据,但是使用SAX方式或DOM方式会对整个文档进行解析,尽管XML文档中后面的大部分数据我们其实都不需要解析,因此这样实际上就浪费了处理资源。使用PULL方式正合适。

当点击三种方式的任何一个按钮时,均能够得到相同的结果

关于xml文件注释的内容到此结束,希望对大家有所帮助。

什么叫做反函数?指对反函数ai工具deepseek?deepseek能搭配的ai工具有哪些