【XML】 XML格式一些记录

XML

  XML格式常用于网络通讯,本身不会有作为而是作为纯文本传输,可以说它是一种独立于应用和硬件的数据传输工具。虽然看起来XML比HTML要更加简单,也知道的更加晚一点,但是需要知道的是,XML才是更加通用的,层级比HTML更加低的。准确来说,HTML都只是XML的一种实现形式而已。所以HTML中很多我们熟知的方式方法都可以应用到XML格式中来。更多XML信息参考http://www.w3school.com.cn/xml/index.asp

■  XML树形结构

  和HTML类似的,XML也是个树形结构。其根节点之前一般会有一个总领全文的xml节点:<?xml version="1.0" encoding="utf-8"?>。来说明这个xml文件的版本信息和编码的格式。具体就不说了,反正和HTML一样的

■  XML语法

  基本语法和HTML也一样,就不多述了,主要讲一下和HTML不同的地方。

  1. XML不允许开放的标签结尾。在HTML中,我们可以有<p>some text这样的元素来表示一行,后面不接上</p>也ok。但是XML中不允许类似于此的开放式结尾的标签。如果XML要有单个标签也要在后面加上一个斜杠比如<tag attribute="value" />。

  2. XML的属性值必须加引号。HTML中属性的值可以不加引号,但是XML不行

  3. HTML中偶尔会见到没有正确按照层级嵌套的元素比如<b><i>text</b></i>,但是在XML中也不允许,层级嵌套的标签必须按照层级顺序一层一层完整地写出来。

  4. XML中特殊字符(主要是五个:<,>,&,‘,")的转义和HTML中的不一样,HTML中可以直接比如把&amp转义成&。但是XML中还要加上一个分号,&amp;才会转义成&。另外,HTML中有两种方式来表达转义比如&#34和&amp都表示&,但是XML中只能用后者。

  5. XML中的空格会被保留。HTML标签内部的空格,多个会被解释成一个,但是XML中会原原本本地保留出所有空格

  6. XML的标签是自定义的,且对大小写敏感。

  总体而言,XML的语法比HTML更加严格严谨一点,这主要是因为XML用于数据传输,要保证数据不受曲解损坏,而HTML的使命是显示相关内容,所以只要达到显示的目的就好,不用细究语法严格性。

■  用XSLT样式表显示XML文件

  XML文件和HTML一样,可以被大多数浏览器打开并浏览,但是没有任何样式表的XML文件就是白开水般的一个XML文件格式,如果加上样式表可以让XML比较漂亮的展示出来。这里用到的就是XSLT这种标记语言。XSLT之于XML相当于CSS之于HTML。

  具体的XSLT内容我还没看过:http://www.w3school.com.cn/xsl/index.asp

  这里写这一节主要是为了知道有这么个东西。。

■  XML和JS的互动

  XML作为一个文件,可以在JS中打开加载,然后变成一个XML对象,XML对象就和JS所在的HTML对象一样,可以设置,获取内容,遍历元素等等,具体操作不说了,可以参见xml dom教程(http://www.w3school.com.cn/xmldom/dom_loadxmldoc.asp)。这里简单提一下如何在JS中创建一个XML对象。一般的做法是,把解析加载XML文件的操作包装成一个函数,写在一个单独的.js文件中,再需要引用的页面引用即可。这个函数可以这么写:

function loadXMLDoc(dname)
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try
  {
  xmlDoc.async=false;
  xmlDoc.load(dname);
  return(xmlDoc);
  }
catch(e) {alert(e.message)}
return(null);
}

  在引用时:

<html>
<head>
<script type="text/javascript" src="loadxmldoc.js">
</script>
</head>
<body>
<script type="text/javascript">
xmlDoc=loadXMLDoc("books.xml");
document.write("xmlDoc is loaded, ready for use");
</script>
</body>
</html>

  这里的books.xml是个url,指定一个待解析的XML文件。

●  关于XMLHttpRequest以及AJAX

  此外,现代的JS中大多都内置了XMLHttpRequest这个对象。XMLHttpRequest是个很神奇的东西,它可以让页面和后台的服务器可以有数据交换。一般做法是在JS中创建一个XMLHttpRequest对象,然后让它以一定方法(POST,GET)打开一个url,期间当然也可以设置一些参数,然后发送这个请求到后台,后台将返回相关请求的应答数据。如果在发送之前设置对象的onreadystatechange属性还可以为这个请求设置一个回调函数,即在收到后台反馈的应答之后再用这个函数做些什么事。

  下面是一个实例:

<html>
<head>
<script type="text/javascript">
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
  {// code for IE7, Firefox, Opera, etc.
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
}

function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"
  if (xmlhttp.status==200)
    {// 200 = "OK"
    document.getElementById(‘A1‘).innerHTML=xmlhttp.status;
    document.getElementById(‘A2‘).innerHTML=xmlhttp.statusText;
    document.getElementById(‘A3‘).innerHTML=xmlhttp.responseText;
    }
  else
    {
    alert("Problem retrieving XML data:" + xmlhttp.statusText);
    }
  }
}
</script>
</head>

<body>
<h2>Using the HttpRequest Object</h2>

<p><b>Status:</b>
<span id="A1"></span>
</p>

<p><b>Status text:</b>
<span id="A2"></span>
</p>

<p><b>Response:</b>
<br /><span id="A3"></span>
</p>

<button onclick="loadXMLDoc(‘/example/xdom/note.xml‘)">Get XML</button>

</body>
</html>

  xmlhttp对象在open的时候如果是"POST"的话那么就需要在send中加上一个对象参数来代表POST的参数了。这个实例中,设置了请求的回调函数为state_Change,在这个函数中我们看到了其调用了xmlhttp对象的readyState属性,这个属性指示的就是这个请求的状态码。各个值的意义:0代表还未调用open,1代表还未调用send,2代表已经调用send,3代表下载响应未完成,4代表请求已经成功完成。通过对这个属性的判断我们可以知道这个请求是失败了还是成功了。更多的细节我不想在现在多讲,因为在JQ框架下有包装得更好的ajax方法,将来即使要用到肯定也不会像这个例子一样从这么底层的JS开始写起。。总之了解一下原理就好了吧。

  上面提到了AJAX(Asynchronous Javascript And XML:异步JS和XML)是这种通过XML和服务器后台进行即时的数据交换的方法较为笼统的叫法。其核心要义就是在不全部重载页面的情况下,通过和后台的数据交互实现刷新一部分的页面。更为强大的AJAX用法,被jQuery包装起来了,所以我认为真正用的时候可以turn to JQ的AJAX方法。

时间: 2024-11-08 15:29:48

【XML】 XML格式一些记录的相关文章

XML Schema格式的&quot;日期型数据”数据库存取

对于XML Schema格式的"日期型数据"在数据库中存于datetime字段的时候,出现错误 mysql> select @@sql_mode; +--------------------------------------------+ | @@sql_mode | +--------------------------------------------+ | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | +-----------

使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历

使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇到需要向SQL Server插入批量数据,然后在存储过程中对这些数据进行进一步处理的情况.存储过程并没有数组.列表之类的参数类型,使用XML类型可妥善解决这个问题. 不过,SQL Server2005对标准xml的支持不足,很多地方需要特别处理.举一个例子说明一下. 这个场景是往存储过程里传递一个xml

xml标签格式,属性以及防止编码乱码

xml标签格式: 1.xml是可扩展性标记语言,后缀名必须以xml结尾. 2.标签不像html那样有固定标签,xml标签可自已编写,不过要保证具有语义化. 3.标签名可以有空标签<student/>和含有内容的标签如:<student></student> 4.含有内容的标签,要保证前后一致性,里面不能包含空格. 5.标签不能以数字开头 xml属性: xml属性和html类似,不过属性名不能够重复. 对于解决编码问题: 1.要保证保存和读取编码一致. 2.要能够读取中文

PHP通过XML报文格式的POST请求方式,与第三方接口交互(发送xml,获取XML,并解析xml步骤)

开发者端:发送请求,并接收结果 <?php // 下面的demo,实现的功能如下: // 1-开发者需要判断一个用户是否存在,去请求第三方接口. // 2-与第三方接口的通信,是以xml格式传送数据.开发者把用户信息以xml格式发送给第三方接口 // 3-第三方接口获取开发者的xml数据,通过数据的查询,把结果再以xml的格式发送给开发者. //首先检测是否支持curl if (!extension_loaded("curl")) { trigger_error("对不

[C# | XML] XML 反序列化解析错误:&lt;xml xmlns=&#39;&#39;&gt; was not expected. 附通用XML到类解析方法

使用 XML 反化时出现错误: public static TResult GetObjectFromXml<TResult>(string xmlString) { TResult result; XmlSerializer serializer = new XmlSerializer(typeof(TResult), new XmlRootAttribute("xml")); using (TextReader tr = new StringReader(xmlStri

字符串json转换为xml xml转换json

原文:字符串json转换为xml xml转换json // To convert an XML node contained in string xml into a JSON string XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); string jsonText = JsonConvert.SerializeXmlNode(doc); // To convert JSON text contained in string js

REST Adapter实现SAP PI中的增强XML/JSON格式转换

SAP标准的REST adapter有着XML/JSON转换的功能,它很有用,因为一方面SAP PI/PO内部以XML格式处理数据,而另一方面,在处理REST架构风格的时候,JSON才是事实上的格式. 然而,观察下网上有关REST Adapter的相关问题,可以得出一个结论:XML消息处理后生成的JSON输出并非总是正确的,有时候它会把人引入歧途.SAP积极地增强了REST Adapter的各方面功能——定制化和特性丰富的JSON处理就是其中一个重点领域.许多这样的特性已经在记录在SAP Hel

Word 2007 XML 解压缩格式

简介 Microsoft Office Word 2007提供了一种新的默认文件格式,叫做Microsoft Office Word XML格式(Word XML格式).这种格式基于开放打包约定(Open Packaging Conventions),XML Paper Specification (XPS)也是基于这个约定.Microsoft Office 97到Microsoft Office 2003中使用的二进制文件格式仍然可以作为一种保存格式来使用,但是它不是保存新文档时的默认文档.

string xml json格式区别

string 是一种最普通的储存一串字符的数据格式 xml 是一种可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据.是一种可扩展标记语言.总结来说,xml可以把String字符串打上标签归类,具有比string格式更高的可读性,传输性,更适合互联网的数据传输 json 是轻量级数据交换格式.json是与xml类似的结构化数据格式,与xml相比json是更简易的语法