7

xml ドキュメントをある形式から別の形式に変換しようとしていますが、これを行っているときに、複数の xmlns 宣言をルート要素に挿入する必要があることがわかりました。

例:

<?xml version="1.0" encoding="utf-8" ?>
<Template xmlns="http://tempuri.org/TemplateBase.xsd" xmlns:TYPES="http://tempuri.org/TemplateTypes.xsd ">
一部のコンテンツ
<テンプレート>

このすべての理由は、この場合、一般的な型を再利用するために、XSD スキーマを複数の XSD に分割したためです。

さて、私が今やりたいことは、この xml を XmlTextWriter で書くことですが、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: Prefix "xmlns" is reserved for use by XML..

今の頭痛が治る方いますか?

4

2 に答える 2

10

使用する

xmlWriter.WriteAttributeString("xmlns", "TYPES", 
    null, "http://tempuri.org/TemplateTypes.xsd");

それ以外の

 xmlWriter.WriteAttributeString("xmlns", "TYPES", 
    "http://tempuri.org/TemplateTypes.xsd", XmlSchema.InstanceNamespace);

これにより、目的の出力が得られるはずです。

于 2010-03-23T17:03:06.267 に答える
0

とても簡単です。xmlns属性は書きません。

代わりに、属性と要素が属する名前空間に属性と要素を記述する必要があります。XmlWriter名前空間の宣言 (xmlns 属性) は独自に処理されます。

于 2010-03-23T16:37:16.207 に答える