Одна хитрость в том, что если вы читаете XML из хранилища / строки, вы можете расширить XmlTextReader, чтобы изменить пространство имен загруженного документа (хотя я не знаю, будет ли это полезно, поскольку вы, похоже, подразумеваете, что у вас уже есть загруженный документ, который, по общему признанию, должен был прийти откуда-то).
Так, например:
class MyXmlReader : XmlTextReader
{
public MyXmlReader(TextReader r) : base(r)
{
}
public override string Prefix
{
get
{
return "abc";
}
}
public override string NamespaceURI
{
get
{
return "urn:something";
}
}
}
Тогда вы можете использовать его как XmlReader r = new MyXmlReader(new StringReader("<root/>"));
или аналогичный.
- = РЕДАКТИРОВАТЬ = -
Теперь я думаю, что есть гораздо более очевидный способ, вместо этого переопределить XmlWriter :)
, например
class MyXmlWriter : XmlTextWriter
{
public MyXmlWriter(TextWriter w)
: base(w)
{
}
public override void WriteStartElement(string prefix, string localName, string ns)
{
base.WriteStartElement("abc", localName, "urn-something");
}
}
Работа выполнена.