XmlDataDocument----从XmlDataDocument读取XML
如何从 XmlDataDocument 读取 XML
此示例阐释如何创建可读取存储在 XmlDataDocument 中的 XML 数据的 XmlReader 类。读取数据后,该示例将 XslTransform 应用到数据,然后从 XmlDataDocument 读出转换后的数据。
注意:此示例是如何将 XML 数据加载到 XmlDataDocument 中主题的继续。
XmlDataDocument 类的作用相当于 XML 数据的内存中缓存。该类使您可以加载关系数据或 XML 数据,然后使用可扩展样式表语言转换 (XSLT) 操作该数据。
XmlDataDocument 类还与 DataSet 类有着紧密的关联。实际上,您可以构造一个 XmlDataDocument 类以将其映射到一个数据集。有关将 XmlDataDocument 映射到数据集的更多信息,请参阅如何从 XSD 架构创建数据集映射
[运行示例] | [查看源代码] |
此示例的代码首先加载到 XmlDataDocument,其中包含示例文件 books.xml 中的 XML 数据。然后,该示例创建一个 XslTransform 对象,并将 XSLT 样式表 identity.xsl 加载到该对象。此样式表从根节点复制所有的 XML。
在转换数据之 前,该数据的形式必须支持 XML 路径语言 (XPath) 查询。这样,该示例可用 XmlDataDocument 创建一个可在其上应用节点转换的 XPathNavigator。现在,通过将 XslTransform 类应用于 XPathNavigator,该示例就能够转换数据了。转换后的数据被作为 XmlReader 返回,Format 函数可用它来读取 XmlDataDocument 中的 XML 数据。
注意:有关 XslTransform 类的信息,请参阅如何将 XSLT 应用于 XML 数据
private const String document = "books.xml"; private const String newStyleSheet = "identity.xsl"; public static void Main() { String[] args = {document, newStyleSheet}; StreamXmlDocumentSample myStreamXmlDocumentSample = new StreamXmlDocumentSample(); myStreamXmlDocumentSample.Run(args); } public void Run(String[] args) { XmlReader myXmlReader = null; XmlDataDocument myXmlDataDocument = new XmlDataDocument(); XslTransform myXslTransform = new XslTransform(); try { // Load the XML from file Console.WriteLine ("Loading file {0} ...", args[0]); myXmlDataDocument.Load (args[0]); Console.WriteLine ("XmlDataDocument loaded with XML data successfully ...\r\n"); Console.WriteLine ("Reading XML ...\r\n"); myXslTransform.Load(args[1]); XPathNavigator myXPathNavigator = myXmlDataDocument.CreateNavigator(); myXmlReader = myXslTransform.Transform(myXPathNavigator, null); FormatXml (myXmlReader); } catch (Exception e) { Console.WriteLine ("Exception: {0}", e.ToString()); } finally { // Close the reader if (myXmlReader != null) myXmlReader.Close(); } } |
||
C# | VB |
FormatXml 函数用于说明从 XmlDataDocument 读取 XML 的一种技术。使用 XmlReader 读入 XmlDataDocument 的全部内容并写出自定义格式的 XML 内容。
private static void FormatXml (XmlReader reader) { while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.ProcessingInstruction: ... } } } // Format the output private static void Format(XmlReader reader, String NodeType) { // Format the output ... } |
||
C# | VB |
摘要
- XmlDataDocument 类使您可以加载关系数据或 XML 数据。
- 可通过使用 XslTransform 为 XmlDataDocument 中的 XML 数据创建一个 XmlReader。