我正在尝试使用eBaysvc.xsd不仅验证 xml,而且构建 xml 本身:
因此,作为 $API 传递
添加争议
我想检索这样的 xml:
<?xml version="1.0" encoding="utf-8"?>
<AddDisputeRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<DisputeExplanation> Tokens </DisputeExplanation>
<DisputeReason> Tokens </DisputeReason>
<ItemID> string </ItemID>
<TransactionID> string </TransactionID>
<OrderLineItemID> string </OrderLineItemID>
<Version> string </Version>
<RequesterCredentials>
<eBayAuthToken> string </eBayAuthToken>
</RequesterCredentials>
<WarningLevel> Tokens </WarningLevel>
</AddDisputeRequest>
我使用 xpath->query 构建了一个脚本,它应该根据多个参数过滤元素,到目前为止我得到了这个:
$Nodes = $xpath->query('//xs:element[(xs:annotation/xs:appinfo/ebl:CallInfo/ebl:CallName/text()="'.$API.'" or xs:annotation/xs:appinfo/ebl:CallInfo/ebl:AllCalls) and (xs:annotation/xs:appinfo/ebl:CallInfo/ebl:RequiredInput/text()="Yes" or xs:annotation/xs:appinfo/ebl:CallInfo/ebl:RequiredInput/text()="Conditionally")]')
但我需要添加一个进一步的参数,它与元素无关,而是与他的祖先有关:
name="ItemID"
假设我们需要添加到查询中的元素,例如
and element:parent:parent:parent:parent[@name="'.$API.'Type"]
因为我们有这个定义:
<xs:complexType name="AddDisputeRequestType">
<xs:annotation>
<xs:documentation>
Enables a buyer and seller in an order relationship to
send messages to each other's My Messages Inboxes.
</xs:documentation>
<xs:appinfo>
<RelatedCalls>
AddMemberMessagesAAQToBidder, AddMemberMessageRTQ
</RelatedCalls>
</xs:appinfo>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ns:AbstractRequestType">
<xs:sequence>
<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">
...
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
但不知道如何实现这一点:有人可以提出解决方案吗
PS:有没有更简单的方法来检查RequiredInput中的“是|有条件地”