我需要使用 XmWriter 在一个元素中包含多个 xmlns 元素
我正在尝试将 xml 文档从一种格式转换为另一种格式,在执行此操作时,我发现需要将多个 xmlns 声明插入根元素。
示例:
<模板 xmlns="http://tempuri.org/TemplateBase.xsd" xmlns:TYPES="http://tempuri.org/TemplateTypes.xsd">
部分内容
<模板>
所有这一切的原因是我已将 XSD 架构划分为多个 XSD,以便在本例中重用通用类型。
好吧,我现在想做的是使用 XmlTextWriter 编写此 xml,但我无法编写 TYPES 的 xmlns 属性。
到目前为止我尝试过的是:
XmlWriter xmlWriter = XmlWriter.Create(filename, settings);
xmlWriter.WriteStartElement("Template", "http://tempuri.org/TemplateBase.xsd");
xmlWriter.WriteAttributeString("xmlns", "TYPES", "http://tempuri.org/TemplateTypes.xsd", XmlSchema.InstanceNamespace);
当我执行此代码时,出现以下异常:
System.ArgumentException:前缀“xmlns”保留供 XML 使用。
有人能治愈我当前的头痛吗?
I'm trying to convert a xml document from one format to another and while doing this I've found that I need to insert multiple xmlns declarations to the root element.
Example:
<?xml version="1.0" encoding="utf-8" ?>
<Template xmlns="http://tempuri.org/TemplateBase.xsd"
xmlns:TYPES="http://tempuri.org/TemplateTypes.xsd">
some content
<Template>
The reason of all this is that I've divided the XSD schema into multiple XSD in order to reuse the general types in this case.
Well, what I want to do now is to write this xml with a XmlTextWriter but I can't write the xmlns attribute for the TYPES.
What I've tried so far is:
XmlWriter xmlWriter = XmlWriter.Create(filename, settings);
xmlWriter.WriteStartElement("Template", "http://tempuri.org/TemplateBase.xsd");
xmlWriter.WriteAttributeString("xmlns", "TYPES", "http://tempuri.org/TemplateTypes.xsd", XmlSchema.InstanceNamespace);
When I execute this code I get the following exception:
System.ArgumentException: Prefix "xmlns" is reserved for use by XML..
Does anyone have any cure to my current headache?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
而不是
这应该会给你想要的输出。
Use
instead of
This should give you the desired output.
这很简单。不要编写
xmlns
属性。相反,您应该在属性和元素所属的命名空间中编写属性和元素。
XmlWriter
将自行处理命名空间声明(xmlns 属性)。It's very simple. Don't write the
xmlns
attributes.Instead, you should be writing your attributes and elements in the namespace they belong in.
XmlWriter
will take care of the namespace declarations (xmlns attributes) on its own.