无法使用默认命名空间在C#中解析XML

时间:2017-07-25 10:51:31

标签: c# xml-parsing

我无法使用默认命名空间解析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;
}

1 个答案:

答案 0 :(得分:3)

您应该在通话中使用XmlNamespaceManager

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