一個骯髒的竅門是,如果你從商店/字符串讀取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");
}
}
工作完成。
僅供參考:在您的示例中,請注意root不在新的名稱空間中。你需要用abc作爲前綴。 – 2010-03-24 03:53:41
@John S.謝謝。在示例中將名稱空間修復添加到根元素。 – 2010-03-24 03:57:26