XmlDocument.Saveは、要素のためのない出力フルのQNameを行います

StackOverflow https://stackoverflow.com/questions/1159771

  •  18-09-2019
  •  | 
  •  

質問

私は、プログラムSystem.Xmlのクラスを使用してXMLドキュメントを作成し、出力XMLノードのためのQNameを使用して、ちょうどローカル名を使用していませんSaveメソッドを使用することにより、問題が発生しました。

などの所望の出力

<ex:root>
  <ex:something attr:name="value">
</ex:root>

しかし、私は現在入手することです。

<root>
  <something name="value">
</root>
私が使用しているすべての名前空間が完全に定義されているので、

これは多少のxmlnsを使用すると、ドキュメント要素の属性が、私はここで明確にするためということを省略しました簡素化されます。

私はのXmlWriterクラスはXmlDocumentオブジェクトを保存し、これはXmlWriterSettingsクラスを取りますが、私は、私はフルのQName出力を得ることを、このような設定方法を見ることができなかったことをするのに使用できることを承知しています。

役に立ちましたか?

解決

あなたが言うように、

、ルート要素は、名前空間の定義を必要とします:

<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
    xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension">
    <iis:WebSite Id="asdf" />
</Wix>

上記のXMLのコード

XmlDocument document = new XmlDocument();
document.AppendChild(document.CreateXmlDeclaration("1.0", null, null));
XmlNode rootNode = document.CreateElement("Wix", "http://schemas.microsoft.com/wix/2006/wi");
XmlAttribute attr = document.CreateAttribute("xmlns:iis", "http://www.w3.org/2000/xmlns/");
attr.Value = "http://schemas.microsoft.com/wix/IIsExtension";
rootNode.Attributes.Append(attr);
rootNode.AppendChild(document.CreateElement("iis:WebSite", "http://schemas.microsoft.com/wix/IIsExtension"));
document.AppendChild(rootNode);
文書がその情報を導出することが可能であることを主張することができますが、ちょっと、それはそれがどのように動作するかだからです。

createAttributeをとのcreateElementメソッドの引数として名前空間URIを渡すための要件は、直感的と思われます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top