我有一個XDocument
我在其中添加了一些註釋(.AddAnnotation
)。現在我想用這些註釋書寫文檔。 .ToString
和.WriteTo
都將丟棄註釋,因此它們將不起作用。實質上,我需要一個自定義的XML編寫器,但抽象類XmlWriter
對元素和屬性的註釋沒有任何概念。具體的問題是,我必須在具有特定註釋的元素之前寫入一些東西,並且使用屬性寫入相同的東西。寫一個帶註釋的XDocument
一個解決方案,我不必寫每一個位(XMLWriter
),但只處理我需要的兩種情況(在具有註釋的元素之前以及帶有註釋的屬性之前)。
我的一個部分解決方案是將這個特定的註釋元素包裝在另一個元素中,但是這弄亂了XML並且不能處理屬性。另一種解決方案是用XComment
的元素替換元素和屬性之前的註釋。但之後我將不得不更換評論。我可能會用最後一個解決方案,但可能已經有評論,可能會有我應用評論的相同格式。
例子:
var annoAtt = new XAttribute("Name", "Foo");
annoAtt.AddAnnotation(new Foo());
var doc = new XDocument(
new XElement("Root",
new XElement("Some",
annoAtt))));
話,我想以此爲輸出(不是有效的XML,但我並不需要一個):
<Root>
<Some {Something}Name="Foo"/>
</Root>
我能做出這樣的:
<Root>
<Some my:Something="Name ..." Name="Foo"/>
</Root>
但這真的不是我想要的。
如果我可以得到元素和屬性的起始位置,它將是完美的。我試圖實現與:
http://blogs.msdn.com/b/mikechampion/archive/2006/09/10/748408.aspx
那麼,注射你問如何讓Linq到XML輸出無效的XML? – R0MANARMY 2010-08-22 14:36:29
我稱之爲自定義輸出,但是;-)或給我一個元素或屬性的文本位置。 – 2010-08-22 14:37:42