【发布时间】:2011-08-16 07:33:53
【问题描述】:
在 Linq 中有没有办法为同一个命名空间使用两个前缀?例如,我在“foo1”和“foo2”下面有两个前缀,它们指向我想在文档中使用的同一个命名空间。我该怎么做?
<foo1:Begin foo2:Name="somevalue" xmlns:foo1="http://foo" xmlns:foo2="http://foo" xmlns="http://bar">
<foo1:Child foo2:Name="somename" />
<SomeBarElement />
</foo1:Begin>
在我的所有代码中,我将元素定义为:
string foo = "http://foo";
string bar = "http://bar";
string foo1 = "foo1";
string foo2 = "foo2";
XName Begin = "{" + foo + "}" + "Begin";
XName Child = "{" + foo + "}" + "Child";
XName Name = "{" + foo + "}" + "Name";
XName SomeBarElement = "{" + bar + "}" + "SomeBarElement";
我希望能够使用类似的元素定义和用法来保持一致性。在我没有两个前缀的地方,我会做类似的事情:
XElement doc = new XElement(Begin,
new XAttribute(XNamespace.Xmlns + foo1, foo),
new XAttribute(XNamespace.Xmlns, bar),
new XElement(Child, new XAttribute(Name, "somename")),
new XElement(SomeBarElement)
);
我需要两个前缀,因为命名空间可能会在以后更改 - 即使没有,使用不同的前缀在逻辑上分隔元素也是有意义的。
【问题讨论】:
-
为什么会有这样的要求...?
-
我需要两个前缀,因为在逻辑上将同一命名空间中的元素分开是有意义的。尽管如此,由于这在技术上是有效的 xml,所以 linq 必须允许以某种方式这样做,不是吗?
-
为什么今天需要相同的命名空间?
标签: c# xml linq namespaces prefix