none
这样的格式的xml如何解析啊? RRS feed

  • 问题

  • <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <SearchStaffsResponse xmlns="http://tempuri.org/"> <SearchStaffsResult> <saas_user> <User_Code>string</User_Code> <User_No>string</User_No> <Company_ID>string</Company_ID> <Company_Name>string</Company_Name> <User_Name>string</User_Name> <User_PY>string</User_PY> <User_Pass>string</User_Pass> <User_Depart>string</User_Depart> <User_DepartName>string</User_DepartName> <User_Phone>string</User_Phone> <User_Mobile>string</User_Mobile> <User_EMail>string</User_EMail> <Is_Admin>int</Is_Admin> <User_Resume>string</User_Resume> <User_Photo>string</User_Photo> <User_Introduction>string</User_Introduction> <User_JoinDate>dateTime</User_JoinDate> <User_Remark>string</User_Remark> </saas_user> <saas_user> <User_Code>string</User_Code> <User_No>string</User_No> <Company_ID>string</Company_ID> <Company_Name>string</Company_Name> <User_Name>string</User_Name> <User_PY>string</User_PY> <User_Pass>string</User_Pass> <User_Depart>string</User_Depart> <User_DepartName>string</User_DepartName> <User_Phone>string</User_Phone> <User_Mobile>string</User_Mobile> <User_EMail>string</User_EMail> <Is_Admin>int</Is_Admin> <User_Resume>string</User_Resume> <User_Photo>string</User_Photo> <User_Introduction>string</User_Introduction> <User_JoinDate>dateTime</User_JoinDate> <User_Remark>string</User_Remark> </saas_user> </SearchStaffsResult> </SearchStaffsResponse> </soap:Body> </soap:Envelope>

    这样带命名空间的xml该如何解析啊?我纠结了很久了


     //初始化XML文档操作类
                XmlDocument myDoc = new XmlDocument();
                //加载XML文件
                myDoc.LoadXml(xmlData);


                UserSeachClass userClass = new UserSeachClass();

                //搜索指定的节点
                //xml有命名空间需加上命名空间格式
                XmlNamespaceManager nsmgr = new XmlNamespaceManager(myDoc.NameTable);
                nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                nsmgr.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
                nsmgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
                nsmgr.AddNamespace("xx", "http://tempuri.org/");

                XmlNodeList xnl = myDoc.SelectNodes("soap:Envelope/soap:Body", nsmgr);

    我是这样写的但是如果soap:Body/SearchStaffResult xnl就变为空了



    2012年4月16日 3:01

答案

  • namespace MyTest
    {
        public class MonthActualapp
        {
            public static void Main(string[] args)
            {
                //初始化XML文档操作类
                XmlDocument myDoc = new XmlDocument();
                //加载XML文件
                myDoc.Load("abc.xml");

                //搜索指定的节点
                //xml有命名空间需加上命名空间格式
                XmlNamespaceManager nsmgr = new XmlNamespaceManager(myDoc.NameTable);
                nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                nsmgr.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
                nsmgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
                nsmgr.AddNamespace("ab", "http://tempuri.org/");

                XmlNodeList xnl = myDoc.SelectNodes("//ab:SearchStaffsResult", nsmgr);
                Console.WriteLine(xnl.Count);
            }
        }
    }

    如果 XPath 表达式不包含前缀,则假定命名空间 URI 为空命名空间。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年4月16日 5:23

全部回复

  • namespace MyTest
    {
        public class MonthActualapp
        {
            public static void Main(string[] args)
            {
                //初始化XML文档操作类
                XmlDocument myDoc = new XmlDocument();
                //加载XML文件
                myDoc.Load("abc.xml");

                //搜索指定的节点
                //xml有命名空间需加上命名空间格式
                XmlNamespaceManager nsmgr = new XmlNamespaceManager(myDoc.NameTable);
                nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                nsmgr.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
                nsmgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
                nsmgr.AddNamespace("ab", "http://tempuri.org/");

                XmlNodeList xnl = myDoc.SelectNodes("//ab:SearchStaffsResult", nsmgr);
                Console.WriteLine(xnl.Count);
            }
        }
    }

    如果 XPath 表达式不包含前缀,则假定命名空间 URI 为空命名空间。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年4月16日 5:23
  • 谢谢 终于搞定了!这个问题纠结我1天了!真心感谢!
    2012年4月16日 7:01
  • 谢谢 终于搞定了!这个问题纠结我1天了!真心感谢!
    请标记答案,谢谢!
    2012年4月16日 7:01
  • 楼上的就是答案!
    2012年4月16日 7:03
  • 楼上的就是答案!
    你好,请以后点击“标记为答复”,以便让更多人可以得到答案,谢谢~~~
    2012年4月16日 7:07