-
2021-05-11 16:40:10
下面是错误:
C:\Users\Administrator\Desktop\YiShaAdmin\YiSha.Cache\YiSha.Cache.Factory\YiSha.Cache.Factory.csproj : error : 项目的默认 XML 命名空间必须为 MSBuild XML 命名空间。如果项目是用 MSBuild 2003 格式创建的,请将 xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 添加到 <Project> 元素中。如果项目是用旧的 1.0 或 1.2 格式创建的,请将其转换为 MSBuild 2003 格式。 C:\Users\Administrator\Desktop\YiShaAdmin\YiSha.Cache\YiSha.Cache.Factory\YiSha.Cache.Factory.csproj
C:\Users\Administrator\Desktop\YiShaAdmin\YiSha.Cache\YiSha.Cache.Interface\YiSha.Cache.Interface.csproj : error : 项目的默认 XML 命名空间必须为 MSBuild XML 命名空间。如果项目是用 MSBuild 2003 格式创建的,请将 xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 添加到 <Project> 元素中。如果项目是用旧的 1.0 或 1.2 格式创建的,请将其转换为 MSBuild 2003 格式。 C:\Users\Administrator\Desktop\YiShaAdmin\YiSha.Cache\YiSha.Cache.Interface\YiSha.Cache.Interface.csproj
每个项目打开都报错.
上面的错误是我用visualstudio 2015 打开的时候报错的,实际上错误的原因就是,vs版本太低.
更多相关内容 -
xml命名空间
2017-11-22 13:40:55xml命名空间讲解,很详细,很不错的讲义,希望对大家有帮助 -
XML命名空间详解
2019-08-09 10:26:06一、命名空间的意义 XML是一种非常好用的标记语言,它具有极好的可扩展性,因此当我们需要同时访问多份...为了解决这个问题XML提供了命名空间的支持。我们想象这样一个场景,在学校的操场上你喊一句“小明”可能一下...一、命名空间的意义
XML是一种非常好用的标记语言,它具有极好的可扩展性,因此当我们需要同时访问多份XML文档时,有可能会出现这样一种情况:在同一份XML文档中可能出现多个同名的标签和属性,而这些标签和属性意义又是完全不同的,这样如果我们如果不从语法上提供区别,则XML处理器将无法区分它们。为了解决这个问题XML提供了命名空间的支持。我们想象这样一个场景,在学校的操场上你喊一句“小明”可能一下子会有好几个小明回应你。那你如果喊3年级2班的小明,那可能只会有你找的那个小明回应你。这里我们指定了一个范围(3年级2班),在这个范围内小明是唯一的。说简单一些,要确定一个人仅有名字是不够的,还必须要有一个确定的范围,这个范围就可以理解为命名空间。
回到xml中,加入有这样一个文档,文档中需要保存图书的信息,同时有包含作者的详细信息,可以能会是如下一个文档:
<book> <title>西游记</title> <author> <name>吴承恩</name> <title>先生</title> </author> </book>
这个文档中book有两个子标签title和author,title表示书名,author表示作者的信息。而author中也有一个title属性,这里title只的是头衔称呼,也就是表示的是称吴承恩为先生,但是这里book中的title和author中的title确是两个完全不同的意思,仅仅靠程序是不能区分开这两个title的区别的。
二、使用前缀
解决这个问题最好的方法就是为不同的元素起不同的名字。比如:这里我们可以定一个规则,每一个book下的元素使用一个前缀,而author下的使用另一个前缀,这样我们可以通过不同的前缀来区分不同的标签,如此一来我们的文档会变成这个样子:
<b:book> <b:title>西游记</b:title> <a:author> <a:name>吴承恩</a:name> <a:title>先生</a:title> </a:author> </b:book>
这种方式看起来比较难看,但是确实可以达到区分的目的,现在b:title和a:title就是两个不同的标签。
通过前缀名我们可以很方便的将文档中的标签分成两类a和b,带有前缀a的属于a类型,带有前缀b的属于b类型,这个类就是命名空间,这里你看起来是不是和Java中的包名有着异曲同工的效果呢?
但是这里还存在一个小问题,这里的命名空间还只是通过名字来区分不同的标签,也就是说命名空间只是为名字进行了一个分类但是名字具体代表了什么意义,它们应该在哪里出现,它并没有一个说明和约束。
三、为什么XML没有直接使用前缀
我们上边这个方法可以解决我们所面临的问题,但是XML为什么没有直接采用这种方式呢?因为这种方式存在一个漏洞,我们通过前缀来约束标签名,那么前缀是否有可能重复呢?加入一份有atguigu定义的xml文档,前缀我们设置为a。这里又一份alibaba定义的文档前缀同样为a,那这两份文档是不是就会出现重复的标签呢?所以我们的问题并没有根本解决。
解决这个问题现在变成了我们需要使用一个唯一的前缀来确保文档中标签的唯一性,那么现实中有哪些东西是唯一的呢?想一下,java中包名采用的是哪种方式?没错!就是uri地址,java中通过将uri地址倒着写来到达区分包的目的,之所以可行就是因为每个公司的uri地址都是唯一的,所以不会出现重复。
这里我们就可以为我们的标签名使用uri地址作为前缀比如 (http://www.atguigu.com/a)title,采用这种方式很显然出现重复的几率就小多了,但是注意这里的http://www.atguigu.com/a并不是一个真实的地址,它的目的就是一个确保唯一。
这种方式虽然看着可行但是实际上是不现实的,不讨论xml中可不可以直接在标签中编写uri地址,仅从编写的角度上看我们也不会这个干,这玩意太麻烦了!!!
四、XML中如何使用命名空间
XML命名空间为我们提供了一个标准的语法,声明XML名称空间,并为XML文档里的某个元素或熟悉确定命名空间。
要在文档里使用XML命名空间,元素名就变成了限定名(qualified names 缩写为qName),限定名分成了两部分,一部分就是我们之前使用的元素名;另一部分是命名空间的前缀,它确定了这个名称所在的命名空间。
<b:book xmlns:b="http://www.atguigu.com/xml/b">
我们在根标签中添加了一个xmlns:b属性,xmlns代表的是xml namespace,b是我们声明的命名空间,但是b本身并没有意义,可以将它理解为是<u>http://www.atguigu.com/xml/b</u>的一个别名,我们在标签中使用b,就相当于使用这个uri地址。一旦使用了b这个前缀,就代表这个标签是属于<u>http://www.atguigu.com/xml/b</u>这个命名空间下的元素。
我们还可以在一个文档中定义多个命名空间,如下的语法也是没有问题的:
<b:book xmlns:b="http://www.atguigu.com/xml/b" xmlns:a="http://www.atguigu.com/xml/a">
五、默认的命名空间
这样我们在文档中就可以使用a和b两个前缀来区分不同的命名空间中的标签了。但是实际上咱们所使用的前缀并不友好,为了方便识别在开发中尽量使用便于识别的前缀,比如book,author等。
采用以上的方式声明命名空间已经可以很好的解决了咱们的问题,但是这种方式显得有一些麻烦,因为每一个标签都需要加上一个前缀,不如直接写标签名来的爽快。所以xml还给我们提供了一种方式可以声明一个默认的命名空间,具体如下:
<book xmlns="http://www.atguigu.com/xml/b" xmlns:a="http://www.atguigu.com/xml/a">
上边的xmlns="http://www.atguigu.com/xml/b"并没有指定前缀,那么这种没有指定前缀的命名空间就会作为页面中元素的默认命名空间,除非在标签中使用其他命名空间的前缀,否则解析器都会认为元素是在默认命名空间下存在。
但是要注意的是一个文档中只能有一个默认的命名空间,如下的语法是错误的:
<book xmlns="http://www.atguigu.com/xml/b" xmlns="http://www.atguigu.com/xml/a">
这里我们指定了两个命名空间而都没有使用前缀,解析器在解析文档时会不知道使用哪个命名空间,所以在一个文档中只能有一个默认的命名空间,其他命名空间必须使用前缀。
另附一文进一步理解XML/XSD命名空间解析:
-
WebApi去除XML命名空间
2016-12-01 14:40:24WebApi去除XML命名空间 vs2013版本及以上环境下运行 -
XML 命名空间
2018-11-23 23:30:20命名空间的作用是避免xml中元素命名的冲突。举例来说我们都可以定义自己的元素名,元素在一个xml文件里面它的含义是表格,在另一个xml文件里可以把它定义为桌子。示例如下代码:表格里可以有&lt;tr&...
命名空间的作用
- 命名空间的作用是避免xml中元素命名的冲突。举例来说我们都可以定义自己的元素名,元素在一个xml文件里面它的含义是表格,在另一个xml文件里可以把它定义为桌子。示例如下代码:表格里可以有<tr>、<td>标签,桌子里可以有<chair> 椅子标签。如果这两个同名的不同意的含义放在一起使用,我们如何知道table 究竟是表格还是桌子?如果应用程序解析xml时,解析到table元素,要解析它是桌子还是表格?由命名空间来告诉你。
--表格 <table> <tr> <td>name</td> <td>age</td> </tr> </table>
--桌子 <table> <chair>4</chair> </table>
命名空间的使用
- 命名空间定义格式( XML Namespace (xmlns) 属性)
- namespace-prefix: 定义的前缀标识
- namespaceURI: 用于标示命名空间的地址
xmlns:namespace-prefix=“namespaceURI”
- 示例
<?xml version="1.0" encoding="UTF-8"?> <h:table xmlns:h="http://www.w3.org/TR/html4/"> <h:tr> <h:td>name</h:td> <h:td>age</h:td> </h:tr> </h:table>
- namespaceURI是唯一的,两个xml文件中如果定义了相同的namespaceURI,代表了定义这个命名空间的元素及其子元素中带有namespace-prefix前缀的元素是拥有相同含义的。
- namespaceURI没有要求能够被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。
- 所以如上只有table及table下的子元素含有h前缀的才是属于该命名空间下的元素,如果没有h前缀元素,则不属于该命名空间,不能按该命名空间的定义去解析该标签。
- 通过这种方式,两个xml文件只需要为 table 定义各自的命名空间,程序就能根据命名空间“分辨”出这两个table不同的含义,按不同的算法去解析它们。
默认的命名空间(Default Namespaces)
- 默认命名空间格式
xmlns=“namespaceURI”
- 示例
<?xml version="1.0" encoding="UTF-8"?> <table xmlns="http://www.w3.org/TR/html4/"> <tr> <tr> <td>name</td> <td>age</td> </tr> </table>
- 很明显我们看出了不同,少了前缀。定义了默认命名空间格式,定义该命名空间的元素及其子元素都归属于该命名空间之下。这样主要是为了方便xml书写。
定义多个命名空间
- 示例
<?xml version="1.0" encoding="UTF-8"?> <h:table xmlns:h="http://www.w3.org/TR/html4/"> <h:tr> <h:td> <s:table xmlns:s="http://www.w3.org/SW/html4/"> <s:chair>4</s:chair> </s:table> </h:td> </h:tr> </h:table>
- 如上我定义了两个命名空间,一个是前缀h的,另一个是前缀s的。虽然两个table嵌套使用,但应用程序根据命名空间依旧能正确的解析。
- 所以理论上你可以在一个xml文件中定义无数多个标识地址不同的命名空间。
- 如果两个及两个以上的命名空间,且它们两两嵌套使用时,至多只有一个命名空间可以设置为默认的命名空间。
参考
- 命名空间定义格式( XML Namespace (xmlns) 属性)
- 命名空间的作用是避免xml中元素命名的冲突。举例来说我们都可以定义自己的元素名,元素在一个xml文件里面它的含义是表格,在另一个xml文件里可以把它定义为桌子。示例如下代码:表格里可以有<tr>、<td>标签,桌子里可以有<chair> 椅子标签。如果这两个同名的不同意的含义放在一起使用,我们如何知道table 究竟是表格还是桌子?如果应用程序解析xml时,解析到table元素,要解析它是桌子还是表格?由命名空间来告诉你。
-
Python利用命名空间解析XML文档
2020-12-17 06:00:14问题 你想解析某个XML文档,文档中使用了XML命名空间。 解决方案 考虑下面这个使用了命名空间的文档: <?xml version="1.0" encoding="utf-8"?> <author>David Beazley <...</h1> -
XML命名空间
2018-12-07 11:44:57.xml文件是很常见的配置文件类型,也经常会遇到,这篇文章以spring官方文档里面的一个.xml文件片段来讲解一下XML命名空间。 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:....xml文件是很常见的配置文件类型,也经常会遇到,这篇文章以spring官方文档里面的一个.xml文件片段来讲解一下XML命名空间。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean name="classic" class="com.example.ExampleBean"> <property name="email" value="someone@somewhere.com"/> </bean> <bean name="p-namespace" class="com.example.ExampleBean" p:email="someone@somewhere.com"/> </beans>
上面文件中和有xmlns的属性都跟XML命名空间有关,引入命名空间的作用就是为了避免名称冲突,这点应该不用说得太多。
xmlns="http://www.springframework.org/schema/beans"
这行代码的意思是“此.xml文件(此行代码所在的.xml文件)里面元素和属性的命名空间是‘http://www.springframework.org/schema/beans ’ ”,这个uri并不一定是可访问的实际资源,只是写成这种形式可以避免命名空间的重复,当然也可能就是可访问的资源。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
这行代码的意思是“此.xml文件里面以xsi为前缀的元素和属性的命名空间是‘http://www.w3.org/2001/XMLSchema-instance ’ ”。
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
xsi:schemaLocation这个属性的命名空间就是"http://www.w3.org/2001/XMLSchema-instance",这个属性由两部分构成,以空格分隔。前一部分是此.xml文件里面元素和属性的命名空间,后一部分是一个URI,指向此.xml文件的XML Schema 文档,也就是规定此.xml文件里面的元素和属性结构的文件,标准XML解析器可以通过这个.xsd文件知道如何解析此.xml文件。
xmlns:p="http://www.springframework.org/schema/p"
这行代码的意思是“此.xml文件里面以p为前缀的元素和属性的命名空间是‘http://www.springframework.org/schema/p ’ ”,例如,文件里面p:email这个属性的命名空间就是它。
-
简单了解XML中的命名空间
2020-09-24 18:08:35主要介绍了XML的命名空间,包括命名空间的声明等XML入门学习中的基础知识,需要的朋友可以参考下 -
XML 命名空间(XML Namespaces).pdf
2021-03-15 10:28:50XML 命名空间(XML Namespaces) -
mybatis中mapper.xml命名空间错误
2021-04-19 09:47:56项目场景: 使用mybatis配置完成基本的增加操作 问题描述: 运行测试添加方法的时候报错... Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.Builde -
python xml命名空间
2012-05-17 02:02:41python xml命名空间 The ns0: prefix for an element name is a reference to a (XML) NameSpace. -
XML命名空间“clr-namespace:XXX“中不存在标记’XXX’
2021-04-25 13:47:38问题描述:项目中引用其项目下的UserControl,Xaml中能找到对应的信息,但是编译提示:XML命名空间"clr-namespace:XXX"中不存在标记’XXX’ 解决办法:检查两个项目的目标框架是否一致,位置如下图: ... -
XML的命名空间
2017-08-25 17:31:17XML的命名空间 -
java获取xml命名空间的节点数据
2019-07-09 10:59:42当遇到xml携带命名空间。如果获取命名空间的节点值呢? 1.使用工具包工具包: org.dom4j import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j... -
xml命名空间详解
2017-11-24 21:03:13在研究spring security的时候,里面提到了一个重要的感念就是命名空间,当时以为是spring的一个什么特殊功能,后来研究后才发现是xml的一个知识点,顺便又研究了一下这个知识,找到一篇文章感觉挺好,在此做个记录。... -
jdom 生成xml 命名空间xmlns问题
2016-12-20 02:43:38// 根据查询到的数据生成XML文件 ...),为什么字节点中也会生成一个xmlns命名空间,怎样才能去掉字节点中的xmlns  -
java自带的多种xml命名空间,及其作用
2016-05-16 17:11:00beans:支持声明bean和装配bean,是Spring最核心也是最原始的命名空间 context:为配置Spring应用上下文提供了配置元素,包扩自动检测和自动装配Bean、注入非Spring直接管理的对象 jee:提供了与java EE API 的... -
WebApi返回xml格式时去除命名空间
2018-10-16 11:02:39WebApi 返回 xml 格式数据时自动去除命名空间相关标记 -
XML命名空间介绍及节点的读取、更改方法及命名空间的去除方法
2018-08-27 11:19:46在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的 元素,就会发生命名冲突。XML 解析器无法... -
python对于操作xml 忽略命名空间 处理解析修改xml
2021-11-19 15:46:58如果我们直接处理xml的话会遇到一些有命名空间的xml 如果正常要添加一个含有命名空间的节点需要这么创建 header = Element(r'{http://schemas.openxmlformats.org/wordprocessingml/2006/main}headerReference',{ ... -
URI与XML命名空间
2013-12-20 22:02:52与XML命名空间 XML拥有一个叫命名空间的,一个可包含元素集和属性名称的抽象域的概念。命名空间的名称(一个必须遵守通用URI文法的字符串)用于标识一个XML命名空间。但是,命名空间的名称一般不被认为是一个URI... -
XML 命名空间(XML Namespaces)介绍以及节点读取方法
2017-04-13 16:11:05XML 命名空间提供避免元素命名冲突的方法。 命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。 这个 XML 文档携带着某个表格中的信息: Apples ...