易截截图软件、单文件、免安装、纯绿色、仅160KB

格式化XML输出

虽然XML设计的初衷是为了方便机器之间的交互(interoperability),而需要满足机器可阅读(machine readable)的特性。然而,由于程序员为了方便开发,既然XML是通过文本表示的,不如再强化一些,做到人类可阅读(human readable)吧。XML究竟是哪种可阅读的讨论已经是老生常谈了,这里不会深入探讨,只是借助这个机会介绍一些方便的格式化XML的方法,与大家共享。
借助MSXML的SAX接口
SAX虽然不是W3C的规范,然而XML社区仍然发扬光大了这种流推送的编程模型,并且广为流传。MSXML也支持SAX(这里特指SAX2)接口,而且SAX Writer还支持indent属性,显然,可以通过SAX Reader读取并送到SAX Writer进行格式化输出的目的。源代码如下:
var oArgs = WScript.Arguments;
if (oArgs.length != 1)
{
WScript.Echo("Usage: cscript saxpretty.js [input xml]");
WScript.Quit();
}
input = oArgs(0);
var reader = new ActiveXObject("Msxml2.SAXXMLReader.6.0");
var writer = new ActiveXObject("Msxml2.MXXMLWriter.6.0");
try
{
writer.encoding = "utf-8";
writer.omitXMLDeclaration = false;
writer.standalone = true;
writer.indent = true;

reader.contentHandler = writer;
reader.errorHandler = writer;
reader.putProperty("http://xml.org/sax/properties/lexical-handler", writer);
reader.putProperty("http://xml.org/sax/properties/declaration-handler", writer);
reader.parseURL(input);
WScript.Echo(writer.output);
}
catch(e)
{
WScript.Echo(e.description);
}
比如输入文件是: 
<?xml version="1.0" encoding="iso-8859-1"?>
<tag><nested>hello</nested>
</tag>
那么输出文件是:
<?xml version="1.0" standalone="yes"?>
<tag>
<nested>hello</nested>
</tag>
虽然输入XML文件制定了编码,由于完全通过MSXML操作,SAX会打理好一切,所以输出文件中不需要指定编码,比如在JavaScript中就是以UTF-16保存的。


相关文档:

使用SimpleXML函数来加载和解析XML文档

 大量SmipleXML函数可用来加载和解析大量XML文档。
1.simpleXML_load_file()函数来加载指定的XML文件到对象。如果加载文件时遇到问题,则返回FLASE。例:
book.xml文件:
<?xml version="1.0" standalone="yes"?>
<library>
<book>
<title>Pride and Prejudice</title>
< ......

asp读取XML文件

<%
'
Set http=Server.CreateObject("Microsoft.XMLHTTP")
http.Open "GET","http://127.0.0.1/1.xml",False
http.send
Dim xml
Set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = False
'xml.load (Server.MapPath("1.xml")) '如果不是远程文件直接这一步
xml.Load(http.ResponseXML)
Dim t ......

CMarkup与tinyXml直接解析XML字符串

今天才知道CMarkup可以直接解析字符串形式的XML。以前都是先存入一个文件,然后从文件中load。多做了I/O操作,效率不高。
CMarkup xml;
CString str;
xml.SetDoc(str);
tinyXml也可以直接解析XML字符串,方式如下:
// directly parsing string with tinyxml   
const char* ......

关于RDF与XML的区别

      刚开始学习语义网的知识,根据语义网层次推进,看完XML紧接着RDF,忽然有个疑问:为什么我们一定要用RDF而非仅仅使用已经很成熟的XML呢?貌似XML比RDF少了一个推理的系统,可以就推理而言,RDF也绝不是最好的,显然OWL的推理要比RDF强很多啊,那么为什么还需要这个层次呢?
  &n ......

missing } in XML expression

本次遇到的问题是:在上传文件时,返回的json数据被加上了<pre></pre>标签。(在普通的表单提交并不会加上<pre>标签)
利用firebug查看错误信息为:
missing } in XML expression  (<pre>{success:true, msg:'成功'}</pre>)
对此问题解决如下:
对response对象设置返回类型:resp.s ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号