网站访问量突然增加,智慧团建系统官方网站登录,织梦手机网站教程视频教程,网站开发得花多少钱回答(9)2 years ago我强烈怀疑问题与名称空间有关 . 尝试摆脱名称空间#xff0c;你会没事的 - 但显然这对你的实际情况没有帮助#xff0c;我认为这个文件是固定的 .我不记得如何在XPath表达式中指定命名空间#xff0c;但我确信这是问题所在 .编辑#xff1a;好的#x…回答(9)2 years ago我强烈怀疑问题与名称空间有关 . 尝试摆脱名称空间你会没事的 - 但显然这对你的实际情况没有帮助我认为这个文件是固定的 .我不记得如何在XPath表达式中指定命名空间但我确信这是问题所在 .编辑好的我ve remembered how to do it now. It虽然不是很令人愉快 - 你需要为它创建一个 XmlNamespaceManager . 以下是一些适用于您的示例文档的示例代码using System;using System.Xml;public class Test{static void Main(){XmlDocument doc new XmlDocument();XmlNamespaceManager namespaces new XmlNamespaceManager(doc.NameTable);namespaces.AddNamespace(ns, urn:hl7-org:v3);doc.Load(test.xml);XmlNode idNode doc.SelectSingleNode(/My_RootNode/ns:id, namespaces);string msgID idNode.Attributes[extension].Value;Console.WriteLine(msgID);}}2 years ago如果要完全忽略名称空间可以使用static void Main(string[] args){string xml \n \n \n ;XmlDocument doc new XmlDocument();doc.LoadXml(xml);XmlNode idNode doc.SelectSingleNode(/*[local-name()My_RootNode]/*[local-name()id]);}2 years ago这应该适用于你的情况而不删除命名空间XmlNode idNode myXmlDoc.GetElementsByTagName(id)[0];2 years ago对不起您忘记了命名空间 . 你需要XmlNamespaceManager ns new XmlNamespaceManager(myXmlDoc.NameTable);ns.AddNamespace(hl7,urn:hl7-org:v3);XmlNode idNode myXmlDoc.SelectSingleNode(/My_RootNode/hl7:id, ns);事实上无论是在这里还是在Web服务中从XPath操作或依赖于XPath的任何东西获取null通常都表明XML命名空间存在问题 .2 years ago嗯......我遇到了同样的问题而且很头疼 . 由于我不太关心命名空间或xml架构我只是从我的xml中删除了这些数据它解决了我所有的问题 . 可能不是最好的答案可能但如果您不想处理所有这些并且您只关心数据(并且不会将xml用于其他任务)删除命名空间可能会解决您的问题 .XmlDocument vinDoc new XmlDocument();string vinInfo your xml string;vinDoc.LoadXml(vinInfo);vinDoc.InnerXml vinDoc.InnerXml.Replace(xmlns\http://tempuri.org\/\, );2 years ago只是为了解决命名空间问题在我的情况下我一直在运行具有多个命名空间的文档并且需要正确处理命名空间 . 我编写了下面的函数来获取命名空间管理器来处理文档中的任何命名空间private XmlNamespaceManager GetNameSpaceManager(XmlDocument xDoc){XmlNamespaceManager nsm new XmlNamespaceManager(xDoc.NameTable);XPathNavigator RootNode xDoc.CreateNavigator();RootNode.MoveToFollowing(XPathNodeType.Element);IDictionary NameSpaces RootNode.GetNamespacesInScope(XmlNamespaceScope.All);foreach (KeyValuePair kvp in NameSpaces){nsm.AddNamespace(kvp.Key, kvp.Value);}return nsm;}2 years ago只需使用// id而不是/ id . 它在我的代码中工作正常2 years ago要记住的规则是如果您的文档指定 namespace 则必须在调用 SelectNodes() 或 SelectSingleNode() 时使用 XmlNamespaceManager . 这是好事 .请参阅文章Advantages of namespaces . Jon Skeet在他的答案中做得很好展示了如何使用 XmlNamespaceManager . (这个答案应该只是对答案的评论但我没有足够的Rep Points来评论 . )2 years agoRoisgoen的回答对我有用但为了使它更通用你可以使用RegEx//Substitute My_RootNode for whatever your root node isstring strRegex \sxmlns([\s]|[^])*);var myMatch new Regex(strRegex, RegexOptions.None).Match(myXmlDoc.InnerXml);if (myMatch.Success){var grp myMatch.Groups[xmlns];if (grp.Success){myXmlDoc.InnerXml myXmlDoc.InnerXml.Replace(grp.Value, );}}我完全承认这不是一个最佳实践答案但它是一个简单的解决方案有时这就是我们所需要的 .