当我验证以下xml时:
<?xml version="1.0" encoding="UTF-8"?>
<AvailRateUpdateRQ xmlns="http://www.expediaconnect.com/EQC/AR/2011/06"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.expediaconnect.com/EQC/AR/2011/06 ./XSD/AvailRateUpdateRQ.xsd">
<Authentication username="user" password="ECLPASS"/>
<Hotel id="111"/>
<AvailRateUpdate>
<DateRange from="2012-04-05" to="2012-04-07"/>
<RoomType id="01">
<Inventory totalInventoryAvailable="10"/>
<RatePlan id="52ASD">
<Rate currency="EUR">
<PerDay rate="185.00"/>
</Rate>
<Restrictions minLOS="2" maxLOS="3" closedToArrival="true"/>
</RatePlan>
</RoomType>
</AvailRateUpdate>
</AvailRateUpdateRQ>
使用此架构:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2011 Expedia, Inc. All Rights Reserved -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.expediaconnect.com/EQC/AR/2011/06"
targetNamespace="http://www.expediaconnect.com/EQC/AR/2011/06"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="2.0.0">
<xs:element name="AvailRateUpdateRQ">
<xs:complexType>
<!-- Definitions of some other element there -->
</xs:complexType>
</xs:element>
我收到此错误:
错误:1845元素'AvailRateUpdateRQ':验证根目录没有可用的匹配全局声明。
答案 0 :(得分:4)
我遇到了类似的问题。您是否手动生成XML?我当时的问题是,当我添加xmlns="Shema Info"
时,实际上并没有像解析器在读取文件时那样在根节点上设置名称空间。所以我生成的根节点不在名称空间中,因此它与验证模式中的根节点不匹配。
我使用的是libxml2,因此调用不同。但是在节点上设置xmlns属性时,我做了:
ns = xmlNewNs(par, val, NULL);
xmlSetNs(par, ns);
par
是父级,val
是名称空间网址。我不确定第一次通话是否需要par
参数。
答案 1 :(得分:0)
真的很好笑。
$dom->loadXML($dom->saveXML)
- 这部分代码可以帮助解决我的问题。
答案 2 :(得分:0)
尝试使用\DOMDocument
而不是var searchArray = [(
ean: String,
name: String,
weight: String,
brand: String,
percent: String,
inside: String,
img: String,
packet: String,
date: String)
]()
var searchArrayFiltered = [(
ean: String,
name: String,
weight: String,
brand: String,
percent: String,
inside: String,
img: String,
packet: String,
date: String)
]()
进行验证。