0

ここで新しく、XmlDocumentについて少し助けを求めています。ルート要素に文字列データを含め、 xmlns =属性を表示から削除することは可能ですか?私はこのようなものを探しています:

<Rulebase author=yadda datetime=bingbang version=1.x </Rulebase>

次のようにして文字列データを使用しようとすると、次のようになります。

xmlDom.AppendChild(xmlDom.CreateElement("", "Rulebase", data));
XmlElement xmlRoot = xmlDom.DocumentElement;

最終的には次のようになります。

<Rulebase xmlns="version=0 author=username date=7/13/2011 </Rulebase>

また、他のすべてのノードにxmlns=""を追加します。

4

1 に答える 1

3

使用CreateElementしているオーバーロードは、最初の引数としてプレフィックス、2番目としてローカル名、3番目として名前空間を取ります。名前空間が必要ない場合は、このオーバーロードを使用しないでください。ローカル名をとる引数を唯一の引数として使用してください。次に、データを子要素および属性として個別に追加します。

var xmlDom = new XmlDocument();
XmlElement root = xmlDom.CreateElement("Rulebase");
xmlDom.AppendChild(root);
XmlElement data = xmlDom.CreateElement("Data");
root.AppendChild(data);

XmlAttribute attribute = xmlDom.CreateAttribute("author");
attribute.Value = "username";
data.Attributes.Append(attribute);

attribute = xmlDom.CreateAttribute("date");
attribute.Value = XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.RoundtripKind);
data.Attributes.Append(attribute);

Console.WriteLine(xmlDom.OuterXml);

作成(フォーマットを追加)

<Rulebase>
    <Data author="username" date="2011-07-13T22:44:27.5488853-04:00" />
</Rulebase>

ただし、XMLの生成に使用XmlDocumentするのはかなり面倒です。XmlSerializer.NETには、やなど、より良い方法がたくさんありますDataContractSerializer。Linq-to-Xmlおよびを使用することもできますXElement。または、を使用できますXmlWriter.Create()。たくさんのオプション。

于 2011-07-14T02:48:29.203 に答える