很久没有做xml方面的解析,今天接到一个小任务,需要解析xml里面的字段内容,顺带复习了一下xpath方面的知识。需要解析的xml是那种待namespace的文档,一开始解析就碰到问题,我就感觉是命名空间在作怪,印象中之前也处理过这种问题,但时间久远,都忘记了,也没有记录下来。
折腾了一会总算找到了方法,.NET中读取带xml命名空间的xml文档的方式确实麻烦,不够直接。不管怎样,还是记录一下解决方法,省得以后又要被折腾一次。
View Code
1 StringReader textReader = new StringReader(surveyProject.SurveryContent);
2 XPathDocument xd = new XPathDocument(textReader);
3 XPathNavigator navigator = xd.CreateNavigator();
4
2 XPathDocument xd = new XPathDocument(textReader);
3 XPathNavigator navigator = xd.CreateNavigator();
4
-- 加入命名空间
5 NameTable nt = new NameTable();
6 XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
7 nsmgr.AddNamespace("rc", "http://sechemas.hirede.com/2011/05/Apps/ReferenceChecking");
8
5 NameTable nt = new NameTable();
6 XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
7 nsmgr.AddNamespace("rc", "http://sechemas.hirede.com/2011/05/Apps/ReferenceChecking");
8
-- 用的时候还得传入
9 XPathNavigator pathNavigator = navigator.SelectSingleNode("//rc:BasicInformation/rc:Name", nsmgr);
10
11 if (pathNavigator != null)
12 {
13 return pathNavigator.Value;
14 }
9 XPathNavigator pathNavigator = navigator.SelectSingleNode("//rc:BasicInformation/rc:Name", nsmgr);
10
11 if (pathNavigator != null)
12 {
13 return pathNavigator.Value;
14 }