一个肮脏的窍门是,如果你从商店/字符串读取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