我的XML文件:解析XML數據
<?xml version="1.0"?>
<root>
<msg>
<MessageError>
<BookingID>123</BookingID>
<Error>Invalid patient name</Error>
<Error>PATIENT NOT FOUND</Error>
<Message>Incoming MESSAGE DATA 1</Message>
</MessageError>
<MessageError>
<BookingID>456</BookingID>
<Error>Undefined patient account number.</Error>
<Error>Undefined Account Number</Error>
<Message>Incoming MESSAGE DATA 2</Message>
</MessageError>
<MessageError>
<BookingID>789</BookingID>
<Error>DOB invalid</Error>
<Message>Incoming MESSAGE DATA 3</Message>
</MessageError>
</msg>
</root>
我的TCL腳本:
set dom [dom parse $msg]
set root [$dom documentElement]
set MessageError [$root selectNodes "/root/msg/MessageError" ]
foreach node $MessageError {
set Error [$root selectNodes {/root/msg/MessageError/Error} ]
#set bookingid [$MessageError text]
#echo "BookingIDXML - $bookingid"
#set message [$MessageError text]
#echo "MessageXML - $message"
foreach errornode $Error {
set error [$errornode text]
echo "ErrorXML - $error"
}
}
我的輸出:
ErrorXML - Invalid patient name
ErrorXML - PATIENT NOT FOUND
ErrorXML - Undefined patient account number.
ErrorXML - Undefined Account Number
ErrorXML - DOB invalid
ErrorXML - Invalid patient name
ErrorXML - PATIENT NOT FOUND
ErrorXML - Undefined patient account number.
ErrorXML - Undefined Account Number
ErrorXML - DOB invalid
ErrorXML - Invalid patient name
ErrorXML - PATIENT NOT FOUND
ErrorXML - Undefined patient account number.
ErrorXML - Undefined Account Number
ErrorXML - DOB invalid
目前缺少文檔中互聯網與這個強大的工具。我如何獲得輸出?我的代碼的註釋「#」部分不起作用。
BookingIDXML - 123
ErrorXML - Invalid patient name
MessageXML - Incoming MESSAGE DATA 1
BookingIDXML - 123
ErrorXML - PATIENT NOT FOUND
MessageXML - Incoming MESSAGE DATA 1
BookingIDXML - 456
ErrorXML - Undefined patient account number.
MessageXML - Incoming MESSAGE DATA 2
BookingIDXML - 465
ErrorXML - Undefined Account Number
MessageXML - Incoming MESSAGE DATA 2
BookingIDXML - 789
ErrorXML - DOB invalid
MessageXML - Incoming MESSAGE DATA 3
在此先感謝。
非常感謝Donal。我是一個tDOM和XML解析的總新手。你的解釋非常詳細。我現在明白了,看到我的錯誤。它有點可怕,你的代碼在第一時間工作。我將閱讀XPath。 – alsnow 2013-04-26 13:03:48
@user我用過幾次tDOM和XPath;該模式(使用'foreach'來查看所找到的節點列表)比手動查找DOM樹容易得多。 (在所有使用DOM_的單一語言中也是這樣,嚴重的是,如果你使用DOM,那麼至少要學習XPath的基本部分,我很高興我做到了!) – 2013-04-28 18:01:12