一.MsXml创建XML文档示例
// XmlCreationDemo.cpp
#include <stdlib.h>
#include <stdio.h>
// 引入MSXML解析器
#import <msxml4.dll>
using namespace MSXML2;
class InitializeCom
{
public:
InitializeCom() { CoInitialize(NULL); // Initializes the COM library }
~InitializeCom() { CoUninitialize(); // Closes the COM library }
}InitCom;
int main()
{
char *szXmlFile = "D:\\china.xml"; // xml文件
IXMLDOMDocumentPtr pDoc = NULL; // xml文档
IXMLDOMProcessingInstructionPtr pProInstruction = NULL; // xml声明
IXMLDOMCommentPtr pComment = NULL; // 注释
IXMLDOMElementPtr pRootElement = NULL, pElement = NULL; // 根节点(元素)
IXMLDOMNodePtr pNode = NULL, pNode1 = NULL, pNode2 = NULL; // 节点
IXMLDOMAttributePtr pAttrNode = NULL; // 属性
HRESULT hr = pDoc.CreateInstance(__uuidof(DOMDocument40)); //
if (FAILED(hr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!");
return EXIT_FAILURE;
}
// (1)创建xml文档声 ......
//create a new Document
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.newDocument();
//add root Node
Element noteuser = d.createElement("note-users");
d.appendChild(noteuser);
//add exists Node
Document readXML = db.parse(new File("c:\\note-user.xml"));
NodeList nl = readXML.getElementsByTagName("user");
for(int i = 0; i < nl.getLength(); i++)
{
Element n = d.createElement("user");
n.setAttribute("name", nl.item(i).getAttributes().getNamedItem("name").getNodeValue());
if(id !=null && id.equals(nl.item(i).getAttributes().getNamedItem("name").getNodeValue()))
{
//duplicate id (redirect to error page)
response.getWriter().print("<font color = red>duplicate id !</font>");
response.getWr ......
//create a new Document
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.newDocument();
//add root Node
Element noteuser = d.createElement("note-users");
d.appendChild(noteuser);
//add exists Node
Document readXML = db.parse(new File("c:\\note-user.xml"));
NodeList nl = readXML.getElementsByTagName("user");
for(int i = 0; i < nl.getLength(); i++)
{
Element n = d.createElement("user");
n.setAttribute("name", nl.item(i).getAttributes().getNamedItem("name").getNodeValue());
if(id !=null && id.equals(nl.item(i).getAttributes().getNamedItem("name").getNodeValue()))
{
//duplicate id (redirect to error page)
response.getWriter().print("<font color = red>duplicate id !</font>");
response.getWr ......
简单地说,xsl是说明xml如何表达出来的样式文件,而xsd给出xml文件的格式描述
如果说xml是一叠钞票,xsd就是验钞机,看看里面有没有假钞,而xsl是点钞机,看看到底是多少钱。用xml可以不用xsd,就像花钱的时候不一定要验钞一样,但是收钱的人一般是想要验的。而花钱的时候不能不点钞,不点那就不是花钱了,是玩钱。当然了,点钞不一定要用点钞机,也可以用手点。
比方不是很恰当。想说明的是,xml(文件里面的东西)是内容,xsd是内容的格式,xsl是处理内容的。
下面是xml和xsl结合的例子
product.xml文件的内容如下
<?xml version="1.0"?>
<?xml:stylesheet type="text/xsl" href="table.xsl"?>
<PRODUCTDET>
<PRODUCT PRODID="P001" CATEGORY="TOY">
<DESCRIPTION>SWPI</DESCRIPTION>
<COLOR>BLUE</COLOR>
<RATE>100</RATE>
</PRODUCT>
<PRODUCT PRODID="P002" CATEGORY="TOY">
<DESCRIPTION>SWPI</DESCRIPTION>
<COLOR>BLUE ......
xml
<mime>
<content>
<type>text/plain</type>
<big>357</big>
<text>D:\\cybercourttext2009101410241364.txt</text>
</content>
<content>
<type>text/plain</type>
<big>357</big>
<text>D:\\cybercourttext2009101410241364.txt</text>
</content>
</mime>
解析
XmlDocument myDoc = new XmlDocument();
myDoc.LoadXml(xmlcontent);
//搜索指定的节点
System.Xml.XmlNodeList mimenodes = myDoc.SelectNodes("//content");
for (int i = 0; i < mimenodes.Count; i++)
  ......
原文链接:http://www.cnblogs.com/ding0910/archive/2007/07/12/815407.html
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using BX.Interface;
namespace WebService
{
/**//// <summary>
/// Service1 的摘要说明。
/// </summary>
public class doService : System.Web.Services.WebService
{
/**//// <summary>
/// 网上报销系统WebService服务通用调用方法
/// </summary>
/// <param name="ifCode">接口标识</param>
/// < ......
原文链接:http://www.cnblogs.com/ding0910/archive/2007/07/12/815407.html
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using BX.Interface;
namespace WebService
{
/**//// <summary>
/// Service1 的摘要说明。
/// </summary>
public class doService : System.Web.Services.WebService
{
/**//// <summary>
/// 网上报销系统WebService服务通用调用方法
/// </summary>
/// <param name="ifCode">接口标识</param>
/// < ......
在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。
C++各大有名库的介绍——XML
1、Xerces
参考网站:http://xml.apache.org/xerces-c/
Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证,以及SAX和DOM API。XML验证在文档类型定义(Document Type Definition,DTD)方面有很好的支持,并且在2001年12月增加了支持W3C XMLSchema 的基本完整的开放标准。
2、XMLBooster
参考网站:http://www.xmlbooster.com/
这个库通过产生特制的parser的办法极大的提高了XML解析的速度,并且能够产生相应的GUI程序来修改这个parser。在DOM和SAX两大主流XML解析办法之外提供了另外一个可行的解决方案。
3、Pull Parser
参考网站:http://www.extreme.indiana.edu/xgws/xsoap/xpp
这个库采用pull方法的parser。在每个SAX的parser底层都有一个pu ......
在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。
C++各大有名库的介绍——XML
1、Xerces
参考网站:http://xml.apache.org/xerces-c/
Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证,以及SAX和DOM API。XML验证在文档类型定义(Document Type Definition,DTD)方面有很好的支持,并且在2001年12月增加了支持W3C XMLSchema 的基本完整的开放标准。
2、XMLBooster
参考网站:http://www.xmlbooster.com/
这个库通过产生特制的parser的办法极大的提高了XML解析的速度,并且能够产生相应的GUI程序来修改这个parser。在DOM和SAX两大主流XML解析办法之外提供了另外一个可行的解决方案。
3、Pull Parser
参考网站:http://www.extreme.indiana.edu/xgws/xsoap/xpp
这个库采用pull方法的parser。在每个SAX的parser底层都有一个pu ......