xml ドキュメントに要素を挿入するたびに、システムはそれに xmlns="" 属性を追加します。どうすればそれを取り除くことができますか? なぜそこにあるのですか?非常に単純な linqtoxml を使用しています。
単純な XML ファイルがあります (Xml 宣言行がなく、名前空間が含まれていることに注意してください)。
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
</PropertyGroup>
</Project>
私は次のことを行います:
// 1. Read in the Xml file
XDocument testXml = XDocument.Load(@"C:\test.xml");
// 2. Add in the extra node
XNamespace ns = testXml.Root.Attribute("xmlns").Value; // Get the existing namespace
XElement newElement = new XElement("MyNewElement", "12345"); // Create the new element
testXml.Element( ns + "Project").Add( newElement ); // Insert the new element into the document
// 3. Write To Disk (without the xml header line)
TextWriter tw = File.CreateText(@"C:\test2.xml");
tw.Write(testXml.ToString());
tw.Close();
ファイルを表示すると、次のようになります。
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup></PropertyGroup>
<MyNewElement xmlns="">12345</MyNewElement>
</Project>
xmlns="" ビットを取り除く必要があります。元のドキュメントには名前空間があるため、新しい要素を追加するときに名前空間を含める必要があると思います。私は要素を挿入しようとしました:
testXml.Element( "Project").Add( newElement );
しかし、それは要素が名前空間名を必要とするためであると想定しているnull参照例外を私に与え続けました。
もう一度解析して、すべての xmlns="" プロパティを削除することを考えましたが、うまくいかないようです。null 参照例外が発生し続けます。ここには名前空間の基本的な理解が欠けている可能性がありますが、周りを見回してもヒントが見つからないようです。
誰でもこれで正しい方向に向けることができますか?
乾杯ジャック。