接上一篇
显示所有结点的内容
1 原xml文件 bookstore.xml
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book ISBN="1234123">
<title>who am i </title>
<author>who</author>
<price>999</price>
</book>
<book>
</book>
</bookstore>
2 program.cs
using System;
using System.Xml;
namespace ReadXml
{
class Class1
{
static void Main(string[] args)
{
//实例化一个XmlDocument对象
XmlDocument xmlDoc = new XmlDocument();
//实例对象读取要写入的XML文件
&nbs ......
接上一篇
显示所有结点的内容
1 原xml文件 bookstore.xml
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book ISBN="1234123">
<title>who am i </title>
<author>who</author>
<price>999</price>
</book>
<book>
</book>
</bookstore>
2 program.cs
using System;
using System.Xml;
namespace ReadXml
{
class Class1
{
static void Main(string[] args)
{
//实例化一个XmlDocument对象
XmlDocument xmlDoc = new XmlDocument();
//实例对象读取要写入的XML文件
&nbs ......
我用ActiveXObject("Microsoft.xmldom")来装载xml文档时,竟然老是提示装载失败,后来上网搜索了下,说是不能直接包含这5个符号('><&"),必须选用&xx;方式来转义,可我找遍XML也没发现这些。
后来我独行排除,才发现有一个元素的属性值为有“|”,去除后就正常了。我真是觉得奇怪,网上也没有说不能包含这个符号呀。
后来我再逐一去除XML中的头部声明,发现只要是在头部加上了<!DOCTYPE>,就不能存在任何符号! ......
我用ActiveXObject("Microsoft.xmldom")来装载xml文档时,竟然老是提示装载失败,后来上网搜索了下,说是不能直接包含这5个符号('><&"),必须选用&xx;方式来转义,可我找遍XML也没发现这些。
后来我独行排除,才发现有一个元素的属性值为有“|”,去除后就正常了。我真是觉得奇怪,网上也没有说不能包含这个符号呀。
后来我再逐一去除XML中的头部声明,发现只要是在头部加上了<!DOCTYPE>,就不能存在任何符号! ......
http://topic.csdn.net/t/20021102/16/1142056.html
use classes in System.Xml namespace, for example (assume your xml is in string s and it contains an xmlns definition):
<ns:vi id="New_main" xmlns:ns="whatever">
<ns:node Expandable="checkOnce" Selected="true" ID="a1">
root<ns:node ID="a2">
Node1
</ns:node>
</ns:node>
</ns:vi>
string s = "................";
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(s);
XmlNamespaceManager xnm = ......
http://topic.csdn.net/u/20080905/10/caea1689-4582-417a-8723-d008a3ae1a10.html?550638422
tringBuilder sb = new StringBuilder();
sb.Append(" <?xml version=\"1.0\"?> ");
sb.Append(" <root> ");
sb.Append(" <test value=\"| \"/> ");
sb.Append(" </root> ");
XmlDocument d = new XmlDocument();
try
{
d.LoadXml(sb.ToString());
MessageBox.Show("OK");
}
catch (Exception ex)
&n ......
前段时间给客户做了几个网页,客户要求在自己的网站中显示自己在新浪博客里的文章,作为网站的一部分。这样的情况可以解决,主要可以通过博客中的 XML来实现,通过用asp来读取博客中XML,将博客中的标题、发布时间等信息显示在网站中。但是在使用的过程中,出现了一个问题:当博客中添加文章后,在网页中读取博客中的XML后进行更新,但是却没有及时更新,查询了很多信息,发现是网站没有及时更新XML数据而造成的。如何解决?先是尝试清除网站的缓存,设置网站中的HTTP头:Cache-Control和值:no-cache。设置后进行测试,发现效果不好,主要问题是这样的设置只是清除了网站内所包含的图片,文本等缓存,没有更新XML缓存,所以没有解决前面的问题。
无奈只能再查找,所幸在CSDN中看到一篇文章,介绍清除缓存的好办法是改变思路,不是清除内容,而是强行加载要更新的内容。主要思路是在打开的路径中添加随机数,因为在iis中访问不同的路径时,内容是强行加载的,没有调用缓存。有了这个思路,改动程序就比较方便了。具体代码如下:
<%
dim xmlDoc
dim http
dim bitem
dim bi
dim title
dim link
dim pubdate
dim days ......
前段时间给客户做了几个网页,客户要求在自己的网站中显示自己在新浪博客里的文章,作为网站的一部分。这样的情况可以解决,主要可以通过博客中的 XML来实现,通过用asp来读取博客中XML,将博客中的标题、发布时间等信息显示在网站中。但是在使用的过程中,出现了一个问题:当博客中添加文章后,在网页中读取博客中的XML后进行更新,但是却没有及时更新,查询了很多信息,发现是网站没有及时更新XML数据而造成的。如何解决?先是尝试清除网站的缓存,设置网站中的HTTP头:Cache-Control和值:no-cache。设置后进行测试,发现效果不好,主要问题是这样的设置只是清除了网站内所包含的图片,文本等缓存,没有更新XML缓存,所以没有解决前面的问题。
无奈只能再查找,所幸在CSDN中看到一篇文章,介绍清除缓存的好办法是改变思路,不是清除内容,而是强行加载要更新的内容。主要思路是在打开的路径中添加随机数,因为在iis中访问不同的路径时,内容是强行加载的,没有调用缓存。有了这个思路,改动程序就比较方便了。具体代码如下:
<%
dim xmlDoc
dim http
dim bitem
dim bi
dim title
dim link
dim pubdate
dim days ......
DOM初步
DOM是Document Object Model的缩写,即文档对象模型。前面说过,XML将数据组织为一颗树,所以DOM就是对这颗树的一个对象描叙。通俗的说,就是通过解析XML文档,为XML文档在逻辑上建立一个树模型,树的节点是一个个对象。我们通过存取这些对象就能够存取XML文档的内容。
下面我们来看一个简单的例子,看看在DOM中,我们是如何来操作一个XML文档的。
这是一个XML文档,也是我们要操作的对象:
Good-bye serialization, hello Java!
下面,我们需要把这个文档的内容解析到一个个的Java对象中去供程序使用,利用JAXP,我们只需几行代码就能做到这一点。首先,我们需要建立一个解析器工厂,以利用这个工厂来获得一个具体的解析器对象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
我们在这里使用DocumentBuilderFacotry的目的是为了创建与具体解析器无关的程序,当DocumentBuilderFactory类的静态方法newInstance()被调用时,它根据一个系统变量来决定具体使用哪一个解析器。又因为所有的解析器都服从于JAXP所定义的接口,所以无论具体使用哪一个解析器,代码都是一样的。所以当在不同的解析器之间进行切换时,只需要更改系统变量 ......
DOM初步
DOM是Document Object Model的缩写,即文档对象模型。前面说过,XML将数据组织为一颗树,所以DOM就是对这颗树的一个对象描叙。通俗的说,就是通过解析XML文档,为XML文档在逻辑上建立一个树模型,树的节点是一个个对象。我们通过存取这些对象就能够存取XML文档的内容。
下面我们来看一个简单的例子,看看在DOM中,我们是如何来操作一个XML文档的。
这是一个XML文档,也是我们要操作的对象:
Good-bye serialization, hello Java!
下面,我们需要把这个文档的内容解析到一个个的Java对象中去供程序使用,利用JAXP,我们只需几行代码就能做到这一点。首先,我们需要建立一个解析器工厂,以利用这个工厂来获得一个具体的解析器对象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
我们在这里使用DocumentBuilderFacotry的目的是为了创建与具体解析器无关的程序,当DocumentBuilderFactory类的静态方法newInstance()被调用时,它根据一个系统变量来决定具体使用哪一个解析器。又因为所有的解析器都服从于JAXP所定义的接口,所以无论具体使用哪一个解析器,代码都是一样的。所以当在不同的解析器之间进行切换时,只需要更改系统变量 ......