【发布时间】:2015-11-11 09:18:44
【问题描述】:
我正在尝试找到正确的 xPath 字符串来解析这个 XML 示例。目前,由于“自闭”元素,我无法获得它。
这是我正在处理的 XML 的一部分。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<getRecordsResponse xmlns="http://www.dummy.com">
<getRecordsResult>
<business_duration/>
<calculation_complete>1</calculation_complete>
<definition>0050aedb58064100ad1a7198c9974545</definition>
<duration/>
<end/>
<field/>
<field_value>PRODUKTIE</field_value>
<id>b5f520716fae82001c41df971e3ee4e3</id>
<start/>
<sys_created_by>system</sys_created_by>
<sys_created_on>2015-09-17 13:21:36</sys_created_on>
<sys_id>0006a479c8a68200a7ffccf9faada3ce</sys_id>
<sys_mod_count>0</sys_mod_count>
<sys_updated_by>system</sys_updated_by>
<sys_updated_on>2015-09-17 13:21:36</sys_updated_on>
<table>cmdb_ci_db_ora_instance</table>
<u_created_on_last_7_days>0</u_created_on_last_7_days>
<u_old_value/>
<u_uummss>152136</u_uummss>
<u_yyyymmdd>20150917</u_yyyymmdd>
<value>PRODUKTIE</value>
</getRecordsResult>
</getRecordsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
问题在于“<u_old_value/>”,例如其中没有字符串。
我想从 XML 中接收所有带有或不带值的元素名称。所以我可以用它执行下一个任务。
像这样:
business_duration = NULL
calculation_complete = 1
definition = 0050aedb58064100ad1a7198c9974545
duration = NULL
end = NULL
field = NULL
field_value = PRODUKTIE
id = b5f520716fae82001c41df971e3ee4e3
start = NULL
sys_created_by = system
sys_created_on = 2015-09-17 13:21:36
sys_id = 0006a479c8a68200a7ffccf9faada3ce
sys_mod_count = 0
sys_updated_by = system
sys_updated_on = 2015-09-17 13:21:36
table = cmdb_ci_db_ora_instance
u_created_on_last_7_days = 0
u_old_value = NULL
u_uummss = 152136
u_yyyymmdd = 20150917
value = PRODUKTIE
【问题讨论】:
-
也许您可以显示您当前正在使用的 XPath,然后我们可能会看到您遇到困难的地方。获取元素的字符串内容的明显方法是使用 string(.) ,它适用于空元素以及具有内容的元素 - 尽管它会给你一个零长度的字符串,而不是字符串“NULL” .
标签: xml xpath xml-parsing