搜索
查看
编辑修改
首页
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
ASR 概述_csdn asr
3
【vue+el-transfer】穿梭框实现及遇到的bug,已解决_vue穿梭框组件
4
过来领你的Bug之“质量度量“篇_测试bug如何衡量测试质量
5
正解锂电池充电流程 - CH224_锂电池usb快充过程详解
6
鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:文本通用)_鸿蒙java开发字体属性设置
7
python回文数判断_#s1-7 判断回文数 n = eval(input()) #输入数据 # 请在下面添加代码 ###
8
VMware安装Windows Server 2003提示Operating System not found_cn_win_srv_2003_r2_enterprise_x64_with_sp2_vl_cd1_
9
深信服AC导致PC无法上网,原因竟是IP/MAC绑定错误_深信服无法连接到服务器
10
如何在Ubuntu 22.04上安装Linux、Apache、MySQL、PHP(LAMP)堆栈_ubuntu22.04 离线安装php
当前位置:
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博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/笔触狂放9/article/detail/286871
推荐阅读
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