У меня есть XDocument
, где я добавил несколько аннотаций (.AddAnnotation
).Теперь я хочу написать документ с этими аннотациями.И .ToString
, и .WriteTo
будут отбрасывать аннотации, поэтому они не будут работать.По сути, мне нужен собственный XML-писатель, но абстрактный класс XmlWriter
не имеет никакого представления об аннотациях к элементам и атрибутам.Конкретная проблема заключается в том, что мне нужно написать некоторые вещи перед элементом с определенной аннотацией и той же вещью с атрибутами.
Решение, при котором мне не нужно писать каждый бит (который XMLWriter
do), но обрабатывает только два нужных мне случая (до того, как элементы с аннотацией и до атрибутов с аннотацией) будут оценены.
Частичное решение, которое у меня есть, - это либо обернуть элементы этой конкретной аннотацией в другуюэлемент, но это портит 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