
用C#解析特殊XML文件,怎么用XmlNamespaceManager。 50
我现在有一个xml文件。截图如下:在程序中,XmlNamespaceManagernsmgr=newXmlNamespaceManager(xml.NameTable);...
我现在有一个xml文件。截图如下:
在程序中,
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xml.NameTable);
nsmgr.AddNamespace("UDP", "http://www.ca.com/erwin/metadata");
nsmgr.AddNamespace("EMX", "http://www.ca.com/erwin/data");
nsmgr.AddNamespace("EM2", "http://www.ca.com/erwin/EM2data");
XmlNode root = xml.DocumentElement.SelectSingleNode("EMX:Model/Entity_Groups");
为什么每次查出来的root都是null。
要是这样写XmlNode root = xml.DocumentElement.SelectSingleNode("EMX:Model");就有节点。也就是说只能查出来根节点的下一层。
请问我哪里写的不对了。 展开
在程序中,
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xml.NameTable);
nsmgr.AddNamespace("UDP", "http://www.ca.com/erwin/metadata");
nsmgr.AddNamespace("EMX", "http://www.ca.com/erwin/data");
nsmgr.AddNamespace("EM2", "http://www.ca.com/erwin/EM2data");
XmlNode root = xml.DocumentElement.SelectSingleNode("EMX:Model/Entity_Groups");
为什么每次查出来的root都是null。
要是这样写XmlNode root = xml.DocumentElement.SelectSingleNode("EMX:Model");就有节点。也就是说只能查出来根节点的下一层。
请问我哪里写的不对了。 展开
3个回答
展开全部
Entity_Groups 的名称空间是http://www.ca.com/erwin,而这个名称空间没有被加到XmlNamespaceManager 里面,所以结果是null,正确的用法是:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xml.NameTable);
nsmgr.AddNamespace("ns", "http://www.ca.com/erwin";);
nsmgr.AddNamespace("UDP", "http://www.ca.com/erwin/metadata";);
nsmgr.AddNamespace("EMX", "http://www.ca.com/erwin/data";);
nsmgr.AddNamespace("EM2", "http://www.ca.com/erwin/EM2data";);
XmlNode root = xml.DocumentElement.SelectSingleNode("
EMX:Model/ns:Entity_Groups
");
展开全部
试试把最后一句改成这样:
XmlNode root = xml.DocumentElement.SelectSingleNode("EMX:Model/EMX:Entity_Groups", nsmgr);
XmlNode root = xml.DocumentElement.SelectSingleNode("EMX:Model/EMX:Entity_Groups", nsmgr);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
必须不对啊 亲,XmlNode root = xml.DocumentElement.SelectSingleNode("EMX:Model");
这个先查找出父节点,然后再找root的子节点找你需要的节点就行啦~
这个先查找出父节点,然后再找root的子节点找你需要的节点就行啦~
追问
能说清楚点么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询