3

我正在使用 C# 中的 XDocument 创建 XML 文档。我有个问题。

<Simple xmlns = "Example"></Simple>

相当于

<Example:Simple></Example:Simple>

?

我试图在 C# 中使用 XNamespace 和 XElement 获得第二个解决方案,但我只得到第一个。

4

4 回答 4

6

不。

第一个示例在 Example 命名空间中创建一个Simple元素(注意命名空间通常表示为 URI)

第二个示例在与 Example 前缀(由属性定义)关联的任何命名空间中创建一个Simple元素。xmlns

这些将是等效的:

<xml xmlns="http://example.com/myNameSpace">
    <Simple></Simple>
</xml>

<xml xmlns="http://example.com/myNameSpace" xmlns:Example="http://example.com/myNameSpace">
    <Example:Simple></Example:Simple>
</xml>
于 2012-08-16T12:51:32.417 回答
1

在第一个示例中,您定义了一个默认命名空间,该命名空间适用于任何不以自己的命名空间为前缀的元素/属性。

在第二个示例中,您尚未定义命名空间。

于 2012-08-16T12:52:10.527 回答
1

不,因为 xml 名称空间允许元素名称不支持的字符,所以您不能在元素标签名称前加上它的名称空间。

添加命名空间前缀,如下所示:

<alias:Simple xmlns:alias = "Example"></alias:Simple>
于 2012-08-16T12:52:21.983 回答
1

不,但它相当于:

<Example:Simple xmlns:Example="Example"></Example:Simple>

使用相对 URI 作为命名空间名称是个坏主意,因为这个 XML 现在有一个不同的命名空间,具体取决于它的来源。所以总是给出完整的 URI。例如,如果从那里接收 XML,http://example.net/somePlace/someXML则相对 URIExample扩展为http://example.net/somePlace/Example,因此请充分使用它:

<Example:Simple xmlns:Example="http://example.net/somePlace/Example"></Example:Simple>

或者

<Simple xmlns="http://example.net/somePlace/Example"></Simple>

否则,如果有人保存了它,C:\Documents那么再次打开它就相当于:

<Simple xmlns="file:///C|/Documents/Example"></Simple>

也就是说Simple这里的意思和刚下载的时候完全不一样。

于 2012-08-16T13:02:24.360 回答