2

別のファイルからxmlドキュメントにpageFooterを削除してから追加しようとしています:

XNamespace rep = "http://developer.cognos.com/schemas/report/8.0/";

//remove pageFooter
doc.Root.Descendants().Where(e=>e.Name == rep + "pageFooter").Remove();

//create and load pagefooter from file
XElement pageFooter = XElement.Load(@"C:\pageFooter.xml");

そして私は空の名前空間を取得しています:

<pageFooter xmlns="">
    <contents>
         ..............

新しい要素に名前空間を追加するために、次のすべてを試しましたが、何も機能しません。

XElement pagefooter = new XElement(rep+"pageFooter"); 
pageFooter = XElement.Load(@"C:\pageFooter.xml");        
//this has no effect

pageFooter.Name = rep.GetName(pageFooter.Name.LocalName);
//this moves the xmlns="" to the next descendant, <contents>

pageFooter.Add(rep);   
//this has no effect

pageFooter.SetAttributeValue("xmlns", rep);
//this results an empty pageFooter

何か案は?ありがとう!!

4

2 に答える 2

2

2 番目の努力がリストされており、正しい軌道に乗っていました。xmlns=""次の子孫への移動はpageFooter、それが正しい xmlns を持っていたことを意味しますが、残りの子孫はそうではありませんでした。これを使って:

foreach (var d in pagefooter.DescendantsAndSelf())
    d.Name = rep + d.Name.LocalName;
于 2012-05-04T16:19:51.140 に答える
0

あなたがするときはいつでもpageFooter = XElement.Load(file)、pageFooter にあるものをファイルの内容に置き換えています。rep名前空間を事前に設定しても、 XElement.Load().

XML ファイルに pageFooter の名前空間があることは確かですか?

于 2012-05-04T16:25:03.867 に答える