2010-05-18
五、验证XML
l 属性了特征方法
方 法
返回类型
参 数
语 法
setProperty()
void
String propertyId,
Object value
parser.setProperty(“[Property URI]”,
”[Object parameter]”);
setFeature()
void
String featureId,
Boolean state
parser.setFeature(“[Feature URI], true”);
getProperty()
Object
String propertyID
String separator =
(String)parser.getProperty( “[Property URI]”);
getFeature()
boolean
String featureID
if(parser.getFeature(“[Feature URI]”)) {
doSomething();
}
l 约束使数据具有了可移植性,而验证则保持了数据的一致性
l 警告:请求验证的结果中几乎没有警告产生。所有正在被验证的XML如果不符合作为引用的DTD均被作为错误处理。XML文档中的非法调用都是很严重的,并且很可能会发生错误。由于这个原因,特别是使用SAX2.0解析器时,很难产生警告。如果验证解析器被用于解析一个并未明确声明DTD的文档,就会产生警 ......
2010-05-18
五、验证XML
l 属性了特征方法
方 法
返回类型
参 数
语 法
setProperty()
void
String propertyId,
Object value
parser.setProperty(“[Property URI]”,
”[Object parameter]”);
setFeature()
void
String featureId,
Boolean state
parser.setFeature(“[Feature URI], true”);
getProperty()
Object
String propertyID
String separator =
(String)parser.getProperty( “[Property URI]”);
getFeature()
boolean
String featureID
if(parser.getFeature(“[Feature URI]”)) {
doSomething();
}
l 约束使数据具有了可移植性,而验证则保持了数据的一致性
l 警告:请求验证的结果中几乎没有警告产生。所有正在被验证的XML如果不符合作为引用的DTD均被作为错误处理。XML文档中的非法调用都是很严重的,并且很可能会发生错误。由于这个原因,特别是使用SAX2.0解析器时,很难产生警告。如果验证解析器被用于解析一个并未明确声明DTD的文档,就会产生警 ......
这是一个用JAVA W3C DOM 进行XML操作的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门JAVA XML操作的朋友参考和学习。
假设有XML文件:test1.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
<book id="B02">
<name>三国演义</name>
<price>10</price>
<memo>四大名著之一。</memo>
</book>
<book id="B03">
<name>水浒</name>
<price>6</price>
<memo>四大名著之一。</memo>
</book>
<book id="B04">
<name>红楼</name>
<price>5</price>
<memo>四大名著之一。</memo>
</book>
</books>
下面是为Test.java
impor ......
这是一个用JAVA W3C DOM 进行XML操作的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门JAVA XML操作的朋友参考和学习。
假设有XML文件:test1.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
<book id="B02">
<name>三国演义</name>
<price>10</price>
<memo>四大名著之一。</memo>
</book>
<book id="B03">
<name>水浒</name>
<price>6</price>
<memo>四大名著之一。</memo>
</book>
<book id="B04">
<name>红楼</name>
<price>5</price>
<memo>四大名著之一。</memo>
</book>
</books>
下面是为Test.java
impor ......
这是一个用JAVA W3C DOM 进行XML操作的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门JAVA XML操作的朋友参考和学习。
假设有XML文件:test1.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
<book id="B02">
<name>三国演义</name>
<price>10</price>
<memo>四大名著之一。</memo>
</book>
<book id="B03">
<name>水浒</name>
<price>6</price>
<memo>四大名著之一。</memo>
</book>
<book id="B04">
<name>红楼</name>
<price>5</price>
<memo>四大名著之一。</memo>
</book>
</books>
下面是为Test.java
impor ......
Step 1:Form1 上添加一个ToolStripContainer控件
Step2:实现代码
private void Form2_Load(object sender, EventArgs e)
{
CMenuEx menu = new CMenuEx();
string sPath = "D:\\Menu.xml";//xml的内容
if (menu.FileExit())
{
menu.LoadAllMenu(sPath, toolStripContainer1);
}
else
{ MessageBox.Show("XML文件加载失败!"); }
}
/// <summary>
/// 菜单读取类
/// </summary>
public class CMenuEx
{
private string _Path;
/// <summary>
/// 设置XML配置文件路径
/// </summary>
public string Path
{
get { return _Path; }
set { _Path ......
Step 1:Form1 上添加一个ToolStripContainer控件
Step2:实现代码
private void Form2_Load(object sender, EventArgs e)
{
CMenuEx menu = new CMenuEx();
string sPath = "D:\\Menu.xml";//xml的内容
if (menu.FileExit())
{
menu.LoadAllMenu(sPath, toolStripContainer1);
}
else
{ MessageBox.Show("XML文件加载失败!"); }
}
/// <summary>
/// 菜单读取类
/// </summary>
public class CMenuEx
{
private string _Path;
/// <summary>
/// 设置XML配置文件路径
/// </summary>
public string Path
{
get { return _Path; }
set { _Path ......
xml:
<?xml version="1.0" encoding="utf-8" ?>
<library>
<name>首都图书馆</name>
<address>朝阳区华威桥南</address>
<books>
<book>
<id>0000</id>
</book>
<book>
<id>0001</id>
<name>Xml初学</name>
<publisher>人民出版社</publisher>
<publishdate>2010-05-0-18</publishdate>
<fee>100.54</fee>
</book>
<book>
<id>0002</id>
<name>XSD定义</name>
<author>子弟</author>
<publisher>子弟出版社</publisher>
<publishdate>2010-05-0-18</publishdate>
<fee>102.54</fee>
</bo ......
using System.Xml;
//初始化一个xml实例
XmlDocument xml=new XmlDocument();
//导入指定xml文件
xml.Load(path);
xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));
//指定一个节点
XmlNode root=xml.SelectSingleNode("/root");
//获取节点下所有直接子节点
XmlNodeList childlist=root.ChildNodes;
//判断该节点下是否有子节点
root.HasChildNodes;
//获取同名同级节点集合
XmlNodeList nodelist=xml.SelectNodes("/Root/News");
//生成一个新节点
XmlElement node=xml.CreateElement("News");
//将节点加到指定节点下,作为其子节点
root.AppendChild(node);
//将节点加到指定节点下某个子节点前
root.InsertBefore(node,root.ChildeNodes[i]);
//为指定节点的新建属性并赋值
node.SetAttribute("id","11111");
//为指定节点添加子节点
root.AppendChild(node);
//获取指定节点的指定属性值
string id=node.Attributes["id"].Value;
//获取指定节点中的文本
string content=node.InnerText;
//保存XML文件
string path=Server.MapPath("~/file/bookstore.xml");
xml.Save(path);
//or use :xml.Save(HttpContext. ......
本文介绍了各种解析方法,着重分析了各自的优缺点:
解析的重要性
解析为什么重要?因为所有 XML 处理都从解析开始。无论使用高层编程语言(如 XSLT)还是低层 Java 编程,第一步都是要读入 XML 文件,解码结构和检索信息等等,这就是解析。
解析文档时面临的第一个选择是采用现成的解析库(基本上每种编程语言都有,包括 COBOL [Common Business Oriented Language])还是自己创建一个。答案非常简单:选择现成的库。
坦白地说,XML 不是一种多么复杂的语法,因此认为可以自己通过正则表达式或其他特殊方法来解析的想法是可以理解的。但实际上却很难成功:XML 语法要求支持多种编码和很多难以捉摸的特性,比如 CDATA 节和实体。自定义的实现几乎很难照顾到所有这些方面,因而造成了不兼容性。
相反,随开发环境提供的解析器大都经过了与兼容性有关的测试。采用 XML 这样的标准语法的主要原因是兼容其他应用程序和工具箱,这是真正值得使用经过良好测试的库的情况之一。
多数解析器提供了至少两种 API,通常是一个对象模型 API 和一个事件 API(也称为流 API)。比如,Java 平台同时提供了 DOM(文档对象模型)和 SAX(Simple API for XML)。
这两 ......