我正在嘗試編寫一個集成引擎,其中我得到的SOAP XML基本上包含必須從XML中提取的數據庫查詢值並制定快速SQL查詢。用於在任意任意XML模式中提取屬性值的Xpath
問題是輸入XML來自各種來源,並有任意的模式。唯一的常見模式是我有兩種類型的節點來從中提取值。這些包含簡單類型和複雜類型。例如
<?xml version="1.0" encoding="UTF-8"?>
<for1:submittedData xmlns:for1="http://www.example.com/abc/1.1/">
<td conceptName="PostalAddress_StreetNumber" name="postal.streetNumber"/>
<td conceptName="PostalAddress_StreetName" name="postal.streetAddress"/>
<Reports conceptName="LaboratoryReport" minDateTime="2012-09-16T00:00:00.000" maxDateTime="2015-09-02T23:59:59.999" searchString="Loinc Test" order="dateDescend" name="clinical.diagnosticReport">
<SendingFacility conceptName="Report_SendingFacility" name="sendingFacility"/>
<Report_Subject conceptName="Report_Subject" name="name"/>
</Reports>
</for1:submittedData>
我要提取的簡單的類型,如PostalAddress_StreetNumber,postal.streetNumber,PostalAddress_StreetName,postal.streetAddress在一個Xpath查詢的所有的屬性值,然後所有的複雜類型LaboratoryReport,2012-09- 16T00:00:00.000。對於複雜類型,要識別的規則是元素是否具有conceptName並且hasChildNodes ='true',則將其視爲複雜類型。 在其上相同的Xpath具有工作輸入例的另一個例子是:
<?xml version="1.0" encoding="UTF-8"?>
<form:submittedData xmlns:form="http://www.example.com/abc1/1.1/">
<html>
<body>
<table>
<tr>
<th>PostalAddress_StreetNumber</th>
<th>PostalAddress_StreetName</th>
</tr>
<td conceptName="PostalAddress_StreetNumber" name="postal.streetNumber"/>
<td conceptName="PostalAddress_StreetName" name="postal.streetAddress"/>
<tr conceptName="LaboratoryReport" minDateTime="2012-09-16T00:00:00.000" maxDateTime="2015-09-02T23:59:59.999" searchString="Loinc Test Results Ful" order="dateDescend" name="clinical.diagnosticReport">
<td conceptName="Report_SendingFacility" name="sendingFacility"/>
<td conceptName="Report_Subject" name="name"/>
</tr>
</table>
</body>
</html>
</form:submittedData>
我試圖提取所有conceptNames作爲//@conceptName
。但我不知道如何在Xpath查詢中制定這些規則。有人可以幫忙嗎?
所以你想獲得*所有*從簡單類型的屬性,我覺得這部分是清楚的。那麼你想從複雜類型中獲得什麼,所有屬性呢?我不這麼認爲。那麼你想提取什麼樣的複雜類型? – har07
是的,在兩個單獨的xpath查詢中,來自簡單和複雜類型的所有屬性。從複雜類型中我也想提取屬性值。例如maxDateTime和maxDateTime值 – iceman