我需要使用OrderLines
“电子邮件”选择所有ProductType
。
是否有“where”条款。我必须使用xpath进行选择。
这是我的XML文档:
<InputOrder>
<Order>
<OrderType>Change</OrderType>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Email>
<ProductLine>Email</ProductLine>
<ProductName>Email Service</ProductName>
<ProductLevel>2</ProductLevel>
<ProductType>EMAIL</ProductType>
<ProductOperation>NoChange</ProductOperation>
</Email>
</Product>
<Asset>
<ActivationStatus>Complete</ActivationStatus>
<AssetStatus>Active</AssetStatus>
</Asset>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Email>
<ProductLine>Email</ProductLine>
<ProductName>Email</ProductName>
<ProductLevel>3</ProductLevel>
<ProductType>EMAIL</ProductType>
<ProductOperation>NoChange</ProductOperation>
</Email>
</Product>
<Asset>
<ActivationStatus>ReadyForActivation</ActivationStatus>
<AssetStatus>Active</AssetStatus>
</Asset>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Access>
<ProductLine>Access</ProductLine>
<ProductName>Internet Access Service</ProductName>
<ProductLevel>2</ProductLevel>
<ProductType>INTERNETACCESS</ProductType>
<ProductOperation>NoChange</ProductOperation>
</Access>
</Product>
<Asset>
<ActivationStatus>Complete</ActivationStatus>
<AssetStatus>Active</AssetStatus>
</Asset>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Itv>
<ProductLine>TV</ProductLine>
<ProductName>Ethernet switch</ProductName>
<ProductLevel>3</ProductLevel>
<ProductType>LITVADDITIONAL</ProductType>
<ProductOperation>NoChange</ProductOperation>
</Itv>
</Product>
<Asset>
<ActivationStatus>Complete</ActivationStatus>
<AssetStatus>Active</AssetStatus>
</Asset>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Internet>
<ProductLine>Internet</ProductLine>
<ProductName>IC31</ProductName>
<ProductLevel>3</ProductLevel>
<ProductType>INTERNET</ProductType>
<ProductOperation>Add</ProductOperation>
</Internet>
</Product>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Internet>
<ProductLine>Internet</ProductLine>
<ProductName>IC01</ProductName>
<ProductLevel>3</ProductLevel>
<ProductType>INTERNET</ProductType>
<ProductOperation>Delete</ProductOperation>
</Internet>
</Product>
<Asset>
<ActivationStatus>Complete</ActivationStatus>
<AssetStatus>Active</AssetStatus>
</Asset>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Itv>
<ProductLine>TV</ProductLine>
<ProductName>Sport1 pakket</ProductName>
<ProductLevel>3</ProductLevel>
<ProductType>TVCHANNEL</ProductType>
<ProductOperation>Add</ProductOperation>
</Itv>
</Product>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Itv>
<ProductLine>TV</ProductLine>
<ProductName>Digitale tv-ontvanger met harddiskrecorder</ProductName>
<ProductLevel>3</ProductLevel>
<ProductType>TV</ProductType>
<ProductOperation>Delete</ProductOperation>
</Itv>
</Product>
<Asset>
<ActivationStatus>Complete</ActivationStatus>
<AssetStatus>Active</AssetStatus>
</Asset>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Itv>
<ProductLine>TV</ProductLine>
<ProductName>Digitale tv-ontvanger</ProductName>
<ProductLevel>3</ProductLevel>
<ProductType>TV</ProductType>
<ProductOperation>Delete</ProductOperation>
</Itv>
</Product>
<Asset>
<ActivationStatus>Complete</ActivationStatus>
<AssetStatus>Active</AssetStatus>
</Asset>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Engineer>
<ProductLine>Engineer</ProductLine>
<ProductName>Omruilen NT</ProductName>
<ProductLevel>3</ProductLevel>
<ProductType>ACCESSENGINEER</ProductType>
<ProductOperation>Add</ProductOperation>
</Engineer>
</Product>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<OrderLine>
<ServiceId>100001</ServiceId>
<Product>
<Engineer>
<ProductLine>Engineer</ProductLine>
<ProductName>Omruilen modem</ProductName>
<ProductLevel>3</ProductLevel>
<ProductType>ACCESSENGINEER</ProductType>
<ProductOperation>Add</ProductOperation>
</Engineer>
</Product>
<OrderLineStatus>Open</OrderLineStatus>
</OrderLine>
<HardwareAlreadyDelivered>false</HardwareAlreadyDelivered>
<Leadtime>12</Leadtime>
<DirectTerminationMailandUser>false</DirectTerminationMailandUser>
<SuppressCommunication>false</SuppressCommunication>
</Order>
</InputOrder>
答案 0 :(得分:1)
试试这个xpath:
//OrderLine[.//ProductType[text()='EMAIL']]
它非常类似于WHERE表达式。
您可以按特殊条件搜索所有//OrderLine
。
在你的情况下,这种情况是内部的某个地方应该是productType,所以它是"//ProductType[text()='EMAIL']"
。还应在其前添加点.
,以通过OrderLine中的相对xpath搜索产品类型,而不是xml文件中的某个位置。
答案 1 :(得分:0)
只需将条件放入方括号:
D1
它在XPath中称为谓词。