2017-07-25 95 views
0

我无法使用默认名称空间解析XML文档。无法使用默认名称空间解析C#中的XML

如果我从XML文件中删除命名空间xmlns="http://java.sun.com/xml/ns/j2ee,那么我可以在nodelist中获取值。我不想使用Linq。

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> 
    <display-name>Test - My tomcat webapp</display-name> 
</web-app> 

C#代码:

String strFileUsers = @"E:\\Dot_net\\XML_Parser\\demo\\web_org.xml"; 
XmlDocument docUsers = new XmlDocument(); 

try 
{ 
    docUsers.Load(strFileUsers); 
} 
catch (Exception) 
{ 
    MessageBox.Show("Cannot open file "); 
    return; 
} 

try 
{ 
    XmlNodeList nodeList = docUsers.SelectNodes("//display-name"); 

    Console.WriteLine(nodeList.Count); 
} 
catch (Exception ex) 
{ 
    return; 
} 

回答

3

你应该在你的呼叫

XmlNamespaceManager ns = new XmlNamespaceManager(docUsers.NameTable); 
ns.AddNamespace("test", "http://java.sun.com/xml/ns/j2ee"); 
XmlNodeList nodeList = docUsers.SelectNodes("//test:display-name",ns); 
+0

仍然得到计数空使用的XmlNamespaceManager。 – Hkachhia

+0

在我的情况下,xmlns在像之类的xml标记后面追加...> – Hkachhia

+0

您能否请求发布示例XML –

相关问题