在加载的对象模型中,使用命名空间为 XmlDocument 元素添加前缀
我有一个“普通” XmlDocument 像这样加载:
<root>
<element1 />
<element2></element2>
</root>
并希望在对象模型加载之前使用命名空间来限定元素,
<abc:root xmlns:abc="urn:something">
<abc:element1 />
<abc:element2></abc:element2>
</abc:root>
然后再将其写出。
I have a "plain" XmlDocument loaded like so:
<root>
<element1 />
<element2></element2>
</root>
and want to qualify the elements with namespaces like so while the object model is loaded
<abc:root xmlns:abc="urn:something">
<abc:element1 />
<abc:element2></abc:element2>
</abc:root>
before writing it out.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一个肮脏的技巧是,如果您从存储/字符串读取 XML,那么您可以扩展 XmlTextReader 来更改加载的文档的命名空间(尽管我不知道这是否会有帮助,因为您似乎暗示您已经有一个加载的文档,诚然,这肯定是来自某个地方)。
例如:
然后您可以像
XmlReader r = new MyXmlReader(new StringReader("")); 或类似的方式使用它。
-= 编辑=-
现在我想有一个更明显的方法,重写 XmlWriter :) 例如
工作
完成。
One dirty trick is if you are reading the XML from a store/string then you can extend XmlTextReader to change the loaded document's namespace (although I do not know if is going to be helpful as you seem to imply you already have a loaded document, which admittedly must have come from somewhere).
So for example:
Then you can use it like
XmlReader r = new MyXmlReader(new StringReader("<root/>"));
or similar.-= EDIT =-
Now I think about it there is a far more obvious way, override the XmlWriter instead :)
e.g.
Job done.
不幸的是,您不能只更改节点的命名空间。这些属性是只读的。
您将不得不通过递归或使用 XSLT 创建新文档。
Unfortunately, you can't just change the namespace for a node. Those properties are read-only.
You're going to be stuck creating a new document either by recursion or by using an XSLT.