搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
笔触狂放9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
关于郑州大学校园网锐捷客户端禁止热点分享,禁止多网卡的解决办法_禁止热点共享
2
playwright基础教程_playwright教程
3
opencv训练自己的xml分类器以及如何获取opencv_createsamples.exe和opencv_traincascade.exe
4
修改Windows中 pip 的缓存位置与删除 pip 缓存_pip config set global.cache-dir
5
深度学习在图像检索的应用_互联网带来的大数据很大程度上缓解了模型训练过拟合的问题
6
Java常见跳出循环的4种方式总结、switch中的break与return、lamada表达式中foreach如何正确选择退出方式_java switch return
7
论文笔记 P-Tuning v2 与微调性能相等的提示性优化_ai pq tuning
8
华为鸿蒙技术——应用程序包_鸿蒙 hap 安装包结构
9
OpenHarmonyOs / LiteOs-a 应用开发_liteos 应用程序
10
手把手教你安装苹果官方转译工具Game Porting Toolkit ,用Mac轻松玩转windows以及3A大作_mac游戏转译
当前位置:
article
> 正文
Schema 校验XML某些属性不可重复
作者:笔触狂放9 | 2024-03-22 09:23:47
赞
踩
xml中如何设置属性值不可重复
问题的提出:
当xml文件包含多个相同元素时,如果这些元素的字段在该属性值上有重复,则不能通过Schema验证。
问题的分类:
根据不能重复的元素或者属性所在位置,可以分为下面3种情况
1. 不同元素的某个属性不能重复
2. 不同元素的某个子元素不能重复
3. 一个元素的多个子元素不能重复
解决方法举例:
XML文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person name="walnut"> -->不同person的name属性不能重复
<id>13130198201200770</id> -->不同person的id子元素不能重复
<children>
<child>aaa</child> -->children的不同child不能重复
<child>bbb</child>
<child>ccc</child>
</children>
</person>
<person name="daisy">
<id>13130198201200775</id>
<children>
<child>ccc</child>
</children>
</person>
</persons>
用于校验的XSD文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:element name="persons">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="person" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:unique name="nameUnique">
<xsd:selector xpath=".//person"/>
<xsd:field xpath="@name"/>
</xsd:unique>
<xsd:unique name="idUnique">
<xsd:selector xpath=".//person"/>
<xsd:field xpath="id"/>
</xsd:unique>
</xsd:element>
<xsd:element name="person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type="xsd:string"/>
<xsd:element ref="children" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="children">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="child" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:unique name="childUnique">
<xsd:selector xpath=".//child"/>
<xsd:field xpath="."/>
</xsd:unique>
</xsd:element>
</xsd:schema>
利用xsd文件校验xml文件的java代码:
[code]
public class XMLValidateUtil {
private static Logger logger = Logger.getLogger(XMLValidateUtil.class);
/**
* 利用xsd文件验证xml文件的结构合法性
*
* @param xmlFileName
* @param xsdFileName
* @return
*/
public static boolean validateXMLByXSD(String xmlFileName, String xsdFileName) {
if (xmlFileName == null || xmlFileName.length() < 1) {
return false;
}
if (xsdFileName == null || xsdFileName.length() < 1) {
return false;
}
try {
XMLErrorHandler errorHandler = new XMLErrorHandler();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);// 注意要设置有效,否则后面验证无用
// factory.setNamespaceAware(true);//XSD中有命名空间设置
SAXParser parser = factory.newSAXParser();
SAXReader xmlReader = new SAXReader();
org.dom4j.Document documentObject = (org.dom4j.Document) xmlReader
.read(new File(xmlFileName));// filename是对应符合XSD模式的具体xml文件绝对路径名
// String xsdpathfile = "e:\\schemaexample\\example.xsd";//xsdPathfile是绝对路径名
parser.setProperty(
"http://java.sun.com/xml/jaxp/properties/schemaLanguage",
"http://www.w3.org/2001/XMLSchema");
parser.setProperty(
"http://java.sun.com/xml/jaxp/properties/schemaSource",
"file:" + xsdFileName);
SAXValidator validator = new SAXValidator(parser.getXMLReader());
validator.setErrorHandler(errorHandler);
validator.validate(documentObject);
XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint());
if (errorHandler.getErrors().hasContent()) {
writer.write(errorHandler.getErrors());
return false;
} else {
logger.info("xml validate success by xsd.");
return true;
}
} catch (Exception ex) {
logger.error("xml file: "+xmlFileName+" validate failed by xsd file:"+xsdFileName+" because "+ex.getMessage());
return false;
}
}
public static void main(String[] args) {
String xmlFile="C:\\myxml.xml";
String xsdFile="C:\\myxsd.xsd";
XMLValidateUtil.validateXMLByXSD(xmlFile,xsdFile);
}
}
[/code]
本文内容由网友自发贡献,转载请注明出处:
【wpsshop博客】
推荐阅读
article
鸿蒙问题(解决)之:hvigor ERROR: S
che
ma
validate
failed
. De...
报错,感觉是说reason要用指定的字符,但是修改后还是报错,先不管了。之后再查找问题,待修复。记录问题,在鸿蒙开发中申...
赞
踩
article
nodejs
启动
mqtt
服务报错SchemaError: Expected `
schema
` to ...
代码】
nodejs
启动
mqtt
服务报错SchemaErrorExpected`
schema
`tobe
an
object
or...
赞
踩
article
ng2打包报错Schema
validation
failed
with
the
following
...
将angular.json中的红框处删除:_
error
:
schema
validation
failed
with
t...
赞
踩
article
java
.
io
.IOExcept
io
n: [Management:141245]
Schema
val...
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.configurat
io
n.sch...
赞
踩
article
报错:
Schema
initialization
FAILED! Metastore
state
w...
org.apache.hadoop.hive.metastore.HiveMetaException:
Schema
i...
赞
踩
article
任务“
ValidateAppxManifest
”失败。未指定的错误_
isdev
:
error
-9...
ualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(34...
赞
踩
article
java
通过
Json
-
schema
完成对
数据
的
效验
_
java
json
数据
校验
json
sch...
Json
-
schema
java
数据
效验
_
java
json
数据
校验
json
schema
java
json
数据
校验...
赞
踩
article
模式验证(
Schema
Validation
)_
mongodb
schema
validate
in...
目录1 指定验证规则2 JSON架构(
Schema
)3 其他查询表达式4 行为4.1 现有文档4.2 接收或拒绝无效文档...
赞
踩
article
json
schema
validate_
json
schema
validate...
为了检测API返回的数据结构是否正确,刚好chrome的插件postman可以做这件事。其实它用的也是tv4的库来验证。...
赞
踩
article
schema
验证
python
数据格式...
给Schema类传入类型(int、str、float等)from
schema
import SchemaSchema(...
赞
踩
article
json
schema
validate...
为了检测API返回的数据结构是否正确,刚好chrome的插件postman可以做这件事。其实它用的也是tv4的库来验证。...
赞
踩
article
php
schema
,
cubrid
_
schema
...
--- Primary Key ---array(3) {[0]=>array(4) {["CLASS_NAME"]=>...
赞
踩
article
php
schema
,用
php
对象
,简化
Json
Schema
的
定义
...
本文最后更新于 593 天前,其中的信息可能已经有所发展或是发生改变。使用
php
对象
,描述
Json
-
Schema
变得更容...
赞
踩
article
php
json
schema
,
JSON
Schema
Validation介绍...
工作中经常会开发一些接口公布出去,接口以HTTPHandler方式挂载在ASP.NET上,是以*.filetype的后缀...
赞
踩
article
java
schema
增删改查...
2019独角兽企业重金招聘Python工程师标准>>> ..._
java
row增加
schema
...
赞
踩
article
mongodb
字段
验证规则(
schema
validation
)...
在我们通常的印象中,
mongodb
是模式自由的(
schema
less),可以往一个集合里插入任意类型的数据,这会带来一些...
赞
踩
article
php
schema
,
pdf
_
schema
.
php
...
/* vim: set expandtab sw=4 ts=4 sts=4: *//*** Contributed by...
赞
踩
article
schema
验证
xml
_使用
schema
验证
xml
文档...
两步:一、写xsd文件(xsd写法参照点我学习http://www.w3school.com.cn/
schema
/)二、...
赞
踩
article
java
schema
校验
_Java通过
XSD
(
XML
Schema
)
校验
XML
...
Tommale16changjiang road2.使用正确的
XML
文件自动生成
XSD
校验
文件a.xsd,需要借助第三方...
赞
踩
相关标签
鸿蒙
javascript
前端
html
Schema
validation
error
hive
大数据
java
json
mongodb
nosql
数据库
python
数据结构
php schema
php json schema
人工智能
schema validation