XML DTD 入门(2009-12-14 09:08:49)
标签:杂谈
DTD实际上可以看作一个或多个XML文件的模板,这些XML文件中的元素、元素的属性、元素的排列方式/顺序、元素能够包含的内容等,都必须符合DTD中的定义。XML文件中的元素,即我们所创建的标记,是根据我们应用的实际情况来创建的。想要创建一份完整性高、适应性广的DTD是非常困难的,因为各行各业都有他们自己的行业特点,所以DTD通常是以某种应用领域为定义的范围,如:医学、建筑、工商、行政。DTD定义的元素含盖范围越广泛,那么就越复杂。
DTD可以是一个完全独立的文件,也可以在XML文件中直接设定。所以, DTD分为外部DTD(在XML文件中调用另外已经编辑好的DTD)和内部DTD(在XML文件中直接设定DTD)两种。比如,有几十家相互联系的、合作伙伴关系的公司、厂商,他们相互之间的交换电子文档都是用XML文档。那么我们可以将这些XML文档的DTD放在某个地方,让所有交换的XML文档都使用此DTD,这是最方便的做法,同时也适用于公司内部的XML文件使用.
内部DTD
内部DTD是在XML文件的文件序言区域中定义的。语法:
〈!DOCTYPE ......
以下是一个通过minidom模块写文件的完整示例,是在最近做的项目Walle上面用到的,这个示例的目的是生成一个如下的格式的xml,文件格式为无BOM utf-8。
生成xml文件格式:
<?xml version="1.0" encoding="utf-8"?>
<coverages>
<coverage>
<Type>total</Type>
<Name></Name>
<TotalLine>58455</TotalLine>
<EffectiveLine>16623</EffectiveLine>
<CoveredLine>11368</CoveredLine>
<CoverRate>68.38717</CoverRate>
</coverage>
<coverage>
<Type>total</Type>
&nbs ......
以下是一个通过minidom模块写文件的完整示例,是在最近做的项目Walle上面用到的,这个示例的目的是生成一个如下的格式的xml,文件格式为无BOM utf-8。
生成xml文件格式:
<?xml version="1.0" encoding="utf-8"?>
<coverages>
<coverage>
<Type>total</Type>
<Name></Name>
<TotalLine>58455</TotalLine>
<EffectiveLine>16623</EffectiveLine>
<CoveredLine>11368</CoveredLine>
<CoverRate>68.38717</CoverRate>
</coverage>
<coverage>
<Type>total</Type>
&nbs ......
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.org/config/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd"> ......
1. 一般情况下使用以下代码即可将XML字符串重新格式化:
private string FormatXml(string source)
{
StringBuilder sb = new StringBuilder();
XmlTextWriter writer = null;
try
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(source);
& ......
在项目中,同一个配置在不同的目录下要有不同的值,而目录又是不确定的,这时就需要将配置信息存放在相应的目录中,在运行时根据路径去取
方法:用xml文件存储,放在使用目录下,用下面方法获取配置信息
public class yzzConfig
{
/// <summary>
/// 获取Xml文件配置信息
/// </summary>
/// <param name="node">节点名</param>
/// <param name="path">文件路径</param>
/// <returns></returns>
public static string AppSettings(string node, string path)
{
string result = string.Empty;
try
{
//XmlReaderSettings settings = new XmlReaderSettings();
//settings.IgnoreComments = true;
//settings.IgnoreProcessingInstructions = true;
//settings.IgnoreWhitespace = true;
using (XmlReader reader = XmlReader.Create(path))//, settings))
{
......
XmlDocument XMLFile = new XmlDocument();
XMLFile.Load(HttpContext.Current.Server.MapPath(xml/thumbnails.xml));
XmlNode root= XMLFile.SelectSingleNode(Node);
XmlNodeList xnl = XMLFile.GetElementsByTagName("thumbnails");
  ......