【问题标题】:.Net Inline Schema/XML Programmatic Generation for Excel用于 Excel 的 .Net 内联架构/XML 编程生成
【发布时间】:2012-06-21 18:28:05
【问题描述】:

我有一组使用 ASP.Net (VB.Net) 呈现到网页的数据。我现在想将该数据导出到 XML。我创建了一些代码来生成模式,但是,我不知道下一步该做什么。我希望架构与 XML 数据一致,并且我希望编译器检查以确保我为 XML 内容输入的数据针对包含的架构进行验证。有人知道这样做的方法吗?这个想法是让我能够在 Excel 中使用正确类型的字段打开生成的文件。

我以前构建过 XML 文档,这是我以编程方式创建的第一个模式文档。但是,我从未使用过内联模式,更不用说使用它们来强类型化添加到文档中的 XML。

我已经阅读了以下内容,这些内容很有帮助,但都没有解决我上面提到的问题:

http://www.aspfree.com/c/a/XML/Generating-XML-Schema-Dynamically-Using-VBNET-2005-Essentials/

http://blogs.msdn.com/b/kaevans/archive/2007/06/05/inline-an-xml-schema-into-your-xml-document.aspx

【问题讨论】:

    标签: asp.net .net xml excel xsd


    【解决方案1】:

    我不知道您所说的“...我希望编译器检查以确保我为 XML 内容输入的数据根据​​包含的架构进行验证。”

    编译器从不检查。如果您想以编程方式根据架构验证您的 XML 文档,您可能应该使用http://msdn.microsoft.com/en-us/library/system.xml.schema.xmlschemavalidator.aspx

    但是为了将架构与文档内联,您有点回答了自己的问题。您问题中的第二个链接,即http://blogs.msdn.com/b/kaevans/archive/2007/06/05/inline-an-xml-schema-into-your-xml-document.aspx,正是您想要做的。

    您可以将内联 XML 模式视为文档中的文档。好吧,使用 Kirk 的示例,最外层的文档更像是一个使用未定义命名空间(无模式)的容器。他的示例使用属于未定义命名空间的“DerekDoc”文档根。您可以随意命名。

    在该根目录中本质上是两个文档。一种是内联 XML Schema。您只需将其添加为根的子元素。另一个是您打算符合 XML 模式的 XML 文档。您将需要使用 xmlns 属性将此元素设置为您的 XML 架构定义的命名空间(架构的目标命名空间)。

    可能可以将根元素设置为模式的目标命名空间(我还没有尝试过),但客户端可能更难验证文档,因为它是前向引用.

    【讨论】:

    • 所以你说我应该用内联模式生成文档,然后读回它以确保它验证?此外,我尝试过的每种组合都无法在 Excel 中正确打开;所以我觉得我错过了什么。
    • 如果只是在Excel中打开,你看stackoverflow.com/questions/1948799/…
    • 我认为您可能有点模糊了界限。您是否需要验证您生成的 XML 文档?如果是这样,您可能不会验证嵌入到该 XML 文档中的 XML Schema 文档。事实上,我不完全确定你为什么要生成模式。 XML Schemas 通常用于通知其他人如何构造一个有效的 XML 文档。
    • 我要生成的是可以在 Excel 中打开或可以通过 XML 处理程序验证的 XML 文件。我宁愿不使用 Excel 特定格式,特别是因为我知道 Excel 可以打开 XML 文件。但是,我不知道如何让 Excel 打开带有嵌入式架构的 XML 文件。
    • 另一件事是我现在明白我应该只将模式作为我的 XML 文档中的第一个元素包含在内,然后我需要将它读回给自己以确保它是有效的,但是,因为我将所有内容都作为流处理,所以我不知道该怎么做,但我可能可以解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多