我有一个xml文件,并希望将一个子元素添加到其中一个节点,不知道为什么xpath会抛出null异常.这肯定是因为我可能给出了错误的xpath值.
这里添加元素的xpath是什么:
这里添加元素的xpath是什么:
XPath我正在使用:
//SESSIONANALYSER/KER/MODES/NI/STATEinformatION[@TYPE='PREPAID']/INIT/INPUT
这是我想要添加子元素的地方:
<KER> <MODES> <NI> <STATEinformatION TYPE="PREPAID"> <INIT INVALIDINPUTRESPONSE="-2"> <INPUT VALUE="LP6ACTIVATION"> **<I have to add a child element here>**
在以下xml中:
<SESSIONANALYSER> <AP> <MODES> <NI> <STATEinformatION TYPE="PREPAID"> <INIT INVALIDINPUTRESPONSE="-2"> <INPUT VALUE="SLN7ACTIVATION"> <METHOD NAME="CHECKSUBSCRIBERBALANCE" ParaMETERS="SLN7" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SETPSOINUCIP" ParaMETERS="SLN7" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="SLN7DEACTIVATION"> <METHOD NAME="UNSETPSOINUCIP" ParaMETERS="SLN7" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="jk" ParaMETERS="k" POSSIBLEACTIONS1="k" MAINTAINSESSION="h" RESPONSE="l" NEXTLEVEL=";"></METHOD> <METHOD NAME="SENDMESSAGE" ParaMETERS="23" POSSIBLEACTIONS1="FALLOUTONSUCCESS" MAINTAINSESSION="yes" RESPONSE="format" NEXTLEVEL="msdfm"></METHOD> <METHOD NAME="payments" ParaMETERS="parametervalue" POSSIBLEACTIONS1="fg,f" MAINTAINSESSION="fdjfg89" RESPONSE="ndfgm" NEXTLEVEL="msdfm"></METHOD> <METHOD NAME="payments" ParaMETERS="l" POSSIBLEACTIONS1="l" MAINTAINSESSION="l" RESPONSE="l" NEXTLEVEL="l"></METHOD> <METHOD NAME="payments" ParaMETERS="l" POSSIBLEACTIONS1="l" MAINTAINSESSION="l" RESPONSE="l" NEXTLEVEL="l"></METHOD> <METHOD NAME="payments" ParaMETERS="k" POSSIBLEACTIONS1="k" MAINTAINSESSION="k" RESPONSE="k" NEXTLEVEL="k"></METHOD> <METHOD NAME="payments" ParaMETERS="L" POSSIBLEACTIONS1="L" MAINTAINSESSION="L" RESPONSE="L" NEXTLEVEL="L"></METHOD> <METHOD NAME="SENDMESSAGE" ParaMETERS="23" POSSIBLEACTIONS1="FALLOUTONSUCCESS" MAINTAINSESSION="yes" RESPONSE="format" NEXTLEVEL="msdfm"></METHOD> <METHOD NAME="payments" ParaMETERS="12" POSSIBLEACTIONS1="FALLOUTONSUCCESS" MAINTAINSESSION="yes" RESPONSE="format" NEXTLEVEL="msvm"></METHOD> <METHOD NAME="SENDMESSAGE" ParaMETERS="23" POSSIBLEACTIONS1="FALLOUTONSUCCESS" MAINTAINSESSION="yes" RESPONSE="0" NEXTLEVEL="3"></METHOD> <METHOD NAME="SENDMESSAGE" ParaMETERS="23" POSSIBLEACTIONS1="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="format" NEXTLEVEL="3"></METHOD> </INPUT> </INIT> <FAILUREREGION INVALIDINPUTRESPONSE="-2"> <INPUT VALUE="LOWBALANCE"> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="1" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="SETPSOFailed"> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="2" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="UCIPDEBIT"> <METHOD NAME="UNSETPSOINMINSAT" ParaMETERS="SLN7" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_UNSETPSO_FALSE" MAINTAINSESSION="NO" RESPONSE="-6" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="3" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="UNSETPSO"> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="4" NEXTLEVEL="" /> </INPUT> </FAILUREREGION> </STATEinformatION> <STATEinformatION TYPE="POSTPAID"> <INIT INVALIDINPUTRESPONSE="-2"> <INPUT VALUE="SLN7DEACTIVATION"> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="5" NEXTLEVEL="" /> </INPUT> </INIT> </STATEinformatION> </NI> </MODES> </AP> <TN> <MODES> <NI> <STATEinformatION TYPE="PREPAID"> <INIT INVALIDINPUTRESPONSE="-2"> <INPUT VALUE="LPC16ACTIVATION"> <METHOD NAME="SETPSOINUCIP" ParaMETERS="LPC16" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LP26ACTIVATION"> <METHOD NAME="SETPSOINUCIP" ParaMETERS="LP26" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LP49ACTIVATION"> <METHOD NAME="SETPSOINUCIP" ParaMETERS="LP49" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LPT16ACTIVATION"> <METHOD NAME="SETPSOINUCIP" ParaMETERS="LPT16" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LP60ACTIVATION"> <METHOD NAME="SETPSOINUCIP" ParaMETERS="LP60" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LPC16DEACTIVATION"> <METHOD NAME="UNSETPSOINUCIP" ParaMETERS="LPC16" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LP26DEACTIVATION"> <METHOD NAME="UNSETPSOINUCIP" ParaMETERS="LP26" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <!--<METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" />--> </INPUT> <INPUT VALUE="LP49DEACTIVATION"> <METHOD NAME="UNSETPSOINUCIP" ParaMETERS="LP49" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LPT16DEACTIVATION"> <METHOD NAME="UNSETPSOINUCIP" ParaMETERS="LPT16" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LP60DEACTIVATION"> <METHOD NAME="UNSETPSOINUCIP" ParaMETERS="LP60" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> </INIT> <FAILUREREGION INVALIDINPUTRESPONSE="-2"> <INPUT VALUE="LOWBALANCE"> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="1" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="SETPSOFailed"> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="2" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="UCIPDEBIT"> <METHOD NAME="UNSETPSOINMINSAT" ParaMETERS="SLN7" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_UNSETPSO_FALSE" MAINTAINSESSION="NO" RESPONSE="-6" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="3" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="UNSETPSO"> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="4" NEXTLEVEL="" /> </INPUT> </FAILUREREGION> </STATEinformatION> <STATEinformatION TYPE="POSTPAID"> <INIT INVALIDINPUTRESPONSE="-2"> <INPUT VALUE=""> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="5" NEXTLEVEL="" /> </INPUT> </INIT> </STATEinformatION> </NI> </MODES> </TN> <KER> <MODES> <NI> <STATEinformatION TYPE="PREPAID"> <INIT INVALIDINPUTRESPONSE="-2"> <INPUT VALUE="LP6ACTIVATION"> <METHOD NAME="SETPSOINUCIP" ParaMETERS="LP6" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LPSP15ACTIVATION"> <METHOD NAME="SETPSOINUCIP" ParaMETERS="LPSP15" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LP6DEACTIVATION"> <METHOD NAME="UNSETPSOINUCIP" ParaMETERS="LP6" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LPSP15DEACTIVATION"> <METHOD NAME="UNSETPSOINUCIP" ParaMETERS="LPSP15" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="LP6SUBSCRIPTION"> <METHOD NAME="CHECKSUBSCRIBERBALANCE" ParaMETERS="LP6" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_LOWBALANCE_INSUFFICIENTBALANCE" MAINTAINSESSION="NO" RESPONSE="-3" NEXTLEVEL="" /> <METHOD NAME="SETPSOINUCIP" ParaMETERS="LP6" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="FIREUCIPDEBIT" ParaMETERS="LP6" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_CHARGINGFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="0" NEXTLEVEL="" /> </INPUT> </INIT> <FAILUREREGION INVALIDINPUTRESPONSE="-2"> <INPUT VALUE="LOWBALANCE"> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="1" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="CHARGINGFailed"> <METHOD NAME="UNSETPSOINUCIP" ParaMETERS="LP6" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_SETPSOFailed_FALSE" MAINTAINSESSION="NO" RESPONSE="-4" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="6" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="SETPSOFailed"> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="2" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="UCIPDEBIT"> <METHOD NAME="UNSETPSOINMINSAT" ParaMETERS="SLN7" POSSIBLEACTIONS="FALLOUTON_FAILUREREGION_UNSETPSO_FALSE" MAINTAINSESSION="NO" RESPONSE="-6" NEXTLEVEL="" /> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="3" NEXTLEVEL="" /> </INPUT> <INPUT VALUE="UNSETPSO"> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="4" NEXTLEVEL="" /> </INPUT> </FAILUREREGION> </STATEinformatION> <STATEinformatION TYPE="POSTPAID"> <INIT INVALIDINPUTRESPONSE="-2"> <INPUT VALUE=""> <METHOD NAME="SENDMESSAGE" ParaMETERS="" POSSIBLEACTIONS="FALLOUTONSUCCESS" MAINTAINSESSION="NO" RESPONSE="5" NEXTLEVEL="" /> </INPUT> </INIT> </STATEinformatION> </NI> </MODES> </KER> </SESSIONANALYSER>
解决方法
您正在评估的XPath表达式:
//SESSIONANALYSER/KER/MODES/NI/STATEinformatION[@TYPE='PREPAID']/INIT/INPUT
不只选择一个而是选择六个INPUT元素.
因此,使用此XPath表达式,它只选择一个(想要的)INPUT元素:
(//SESSIONANALYSER/KER/MODES/NI/STATEinformatION[@TYPE='PREPAID']/INIT/INPUT)[1]
大多数XPath引擎提供了一个SelectNodes()方法,它返回NodeList中的选定节点,程序员需要遍历此集合 – 即使只选择了一个节点 – 请记住这一点.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。