在解析xml文件的时候按照原来的方法使用selectSingleNode取不到节点。xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<
version
>
1.0
</
version
>
<
TxtMsgMessage
>
<
DateTag
>
2012-5-30
</
DateTag
>
<
Table
>
<
rate
>
0.75
</
rate
>
<
DY
>
2012-5-30 0:00:00
</
DY
>
<
hotelcd
>
057104
</
hotelcd
>
<
strmtypecd
>
B1
</
strmtypecd
>
</
Table
>
</
TxtMsgMessage
>
</
CwapMessage
>
解析代码:
System.Xml.XmlNode nodes = doc.SelectSingleNode("/CwapMessage/TxtMsgMessage/Table/rate");
doc为获取到上边xml的xmlDocument对象,取到的nodes总为null,经过在网上搜索,发现,关键是因为 这段xml 加的有命名空间,即:xmlns="http://wap.homeinns.com/cwap"。
所以,在解析的时候也需要把命名空间加上,才能解析到。做法如下:
System.Xml.XmlNamespaceManager nsmgr = new System.Xml.XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ns", "http://wap.homeinns.com/cwap");
System.Xml.XmlNode root = doc.SelectSingleNode("ns:CwapMessage/ns:TxtMsgMessage/ns:Table/ns:rate", nsmgr);