Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 标识内部XML元素的命名空间_C#_Xml_Xsd - Fatal编程技术网

C# 标识内部XML元素的命名空间

C# 标识内部XML元素的命名空间,c#,xml,xsd,C#,Xml,Xsd,假设我的XML文档中有这样的元素: <xs:appinfo> <CustomXML> <Something>something</Something> </CustomXML> </xs:appinfo> 某物 “xs”被声明为默认模式名称空间。我的问题是:解析器如何解释xs:appinfo的内部元素?它们属于哪个名称空间 我问这个问题是因为我在用C#解析代码,它不断地向CustomXML元素添加“xm

假设我的XML文档中有这样的元素:

<xs:appinfo>
  <CustomXML>
    <Something>something</Something>
  </CustomXML>
</xs:appinfo>

某物
“xs”被声明为默认模式名称空间。我的问题是:解析器如何解释xs:appinfo的内部元素?它们属于哪个名称空间

我问这个问题是因为我在用C#解析代码,它不断地向CustomXML元素添加“xmlns=”“”,这让我假设,否则它会将这些元素视为模式元素。

根据:

默认名称空间声明的范围从其出现的开始标记的开始扩展到相应的结束标记的结束,不包括任何内部默认名称空间声明的范围。[……]

默认名称空间声明适用于其范围内所有未固定的元素名称

这意味着没有名称空间前缀的元素将被解释为位于默认名称空间中。默认名称空间通常在文档的第一个元素上定义,如下所示:

<element xmlns="namespace-uri">
根据:

默认名称空间声明的范围从其出现的开始标记的开始扩展到相应的结束标记的结束,不包括任何内部默认名称空间声明的范围。[……]

默认名称空间声明适用于其范围内所有未固定的元素名称

这意味着没有名称空间前缀的元素将被解释为位于默认名称空间中。默认名称空间通常在文档的第一个元素上定义,如下所示:

<element xmlns="namespace-uri">

对不起,我错了,斯维克是对的。使用特定前缀定义的XML命名空间不会继承到其子级(除非它们也指定该XML命名空间前缀)。另一方面,默认的XML名称空间(定义为
xmlns=“…”
,没有任何前缀)是从子节点链中继承下来的。因此,在这里的例子中,
是默认XML名称空间的一部分(无论是什么),而
节点显然是在定义的
xs=“…”中
XML名称空间对不起-我错了-斯维克是对的。使用特定前缀定义的XML命名空间不会继承到其子级(除非它们也指定该XML命名空间前缀)。另一方面,默认的XML名称空间(定义为
xmlns=“…”
,没有任何前缀)是从子节点链中继承下来的。因此,在这里的例子中,
是默认XML名称空间的一部分(无论是什么),而
节点显然是在定义的
xs=“…”中
XML名称空间您的答案是正确的-我脑子里对从父节点继承到子节点的XML名称空间(用前缀定义)有一个错误的想法;该机制仅适用于默认的XML名称空间(没有任何前缀)。谢谢你把它清理干净!谢谢你们,我解决了这个问题,现在它工作得很好!你的答案是正确的——我脑子里对从父节点继承到子节点的XML名称空间(用前缀定义)有一个错误的想法;该机制仅适用于默认的XML名称空间(没有任何前缀)。谢谢你把它清理干净!谢谢你们,我解决了这个问题,现在它工作得很好!