C#が名前空間とXMLを読み取ります

最初のXML名前空間はXml.Linqで使用することができる読んで、XPathは使用することができる、XPathを解析するために本明細書中で使用されます。

オリジナル参照:https://www.cnblogs.com/duanjt/p/5440540.html

同じ時間基準で:https://www.cnblogs.com/shixudong/p/4056400.html

 

:次のように名前空間を持つ最初のXML

< soapenv:封筒のxmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" > 
   < soapenv:ボディ> 
      < NS:queryResponseののxmlns:NS = "のhttp://release.service.das.jeaw .COM " > 
         < NS:戻りXSI:タイプ= "ax2291:QueryReturnEntity" のxmlns:ax2293 = "http://release.service.das.jeaw.com/xsd" のxmlns:XSI ="のhttp://www.w3 .ORG / 2001 / XMLスキーマ・インスタンス」のxmlns:ax2291 = "http://pojo.servgen.das.jeaw.com/xsd" > 
            < ax2291:コード> DAS00000 </ ax2291:コード>
            < ax2291:メッセージ>服务访问成功</ ax2291:メッセージ> 
            < ax2291:TOTALROWCOUNT > 1 </ ax2291:TOTALROWCOUNT > 
            < ax2291:currentPageNo > 1 </ ax2291:currentPageNo > 
            < ax2291:DATASのXSI:タイプ= "ax2293:EntityGZ_GZBDJXX" > 
               < ax2293。 GZYXM_1 >吕姗姗</ ax2293:GZYXM_1 > 
               < ax2293:GZYZBH_1のXSI:nilを= "真" /> 
               < ax2293:ID_1のXSI:nilを= "真" /> 
            </ ax2291:日付> 
            <ax2291:pageSizeを> 1 </ ax2291:pageSizeを> 
            < ax2291:totalPageCount > 1 </ ax2291:totalPageCount > 
         </ NS:戻る> 
      </ NS:queryResponse > 
   </ soapenv:ボディ> 
</ soapenv:封筒>

 

二つのクラス、てXmlNamespaceManagerとXmlDocumentオブジェクトを含む、構文解析XMLとして。XmlDocumentオブジェクトは、XMLを解析するために、とてXmlNamespaceManagerは、名前空間と関連クラスです。

我々が取得したい場合はXMLとして、LvはサンサンID_1 真のそれを達成する方法を次のように、コードは次のとおりです。

 

文字列 xmlStr = "<soapenv:封筒のxmlns:soapenv = \ "のhttp://schemas.xmlsoap.org/soap/envelope/ \"> <soapenv:ボディ> <NS:queryResponseののxmlns:NS = \ "のhttp://release.service。 das.jeaw.com \ "> <NS:戻りXSI:タイプ= \" ax2291:QueryReturnEntity \」のxmlns:ax2293 = \ "のhttp://release.service.das.jeaw.com/xsd \" のxmlns:XSI = \ "のhttp://www.w3.org/2001/XMLSchema-instance \" のxmlns:ax2291は= \ "のhttp://pojo.servgen.das.jeaw.com/xsdの\"> <ax2291:コード> DAS00000 < / ax2291:コード> <ax2291:メッセージ>服务访问成功</ ax2291:メッセージ> <ax2291:TOTALROWCOUNT> 1 </ ax2291:TOTALROWCOUNT> <ax2291:currentPageNo> 1 </ ax2291:currentPageNo> <ax2291:DATASのXSI:タイプ= \ "ax2293:EntityGZ_GZBDJXX \"> <ax2293:GZYXM_1>吕姗姗</ ax2293:GZYXM_1> <ax2293:GZYZBH_1のxsi:nilを= \ "真\" /> <ax2293:ID_1のxsi:nilを= \ "真\" /> </ ax2291:件のデータ> <ax2291:pageSizeを> 1 </ ax2291:pageSizeを> <ax2291:totalPageCount> 1 </ ax2291:totalPageCount> </ NS:戻ります> </ NS:queryResponse> </ soapenv:BODY> </ soapenv:封筒>" ;

常にXmlDocumentドキュメント = のXmlDocument();
doc.LoadXml(xmlStr)。
NsMgrてXmlNamespaceManager = 新しい新しいてXmlNamespaceManager(doc.NameTable); // このステップは、XML名前空間マネージャインスタンス化することである 
nsMgr.AddNamespace(" soapenvを"" http://schemas.xmlsoap.org/soap/envelope/ " )。
nsMgr.AddNamespace(" NS "" http://release.service.das.jeaw.com " );
nsMgr.AddNamespace(" ax2293 "" http://release.service.das.jeaw.com/xsd " );
nsMgr.AddNamespace(" XSI "" http://www.w3.org/2001/XMLSchema-instance " );
nsMgr.AddNamespace(" ax2291 "" http://pojo.servgen.das.jeaw.com/xsd " );

XmlNode nodeGZYXM = doc.SelectSingleNode(" soapenv:封筒/ soapenv:ボディ/ NS:queryResponse / NS:復帰/ ax2291:DATAS / ax2293:GZYXM_1 " 、nsMgr)。
Console.WriteLineを(nodeGZYXM.InnerText); // 出力Lvshanシャン

のXmlNodeのnodeId = doc.SelectSingleNode(" soapenv:封筒/ soapenv:ボディ/ NS:queryResponse / NS:リターン/ ax2291:DATAS / ax2293:ID_1 / XSI @ :なし"、nsMgr); // @xsi:nilは代わりの属性ノードのノード検索 
Console.WriteLineを(nodeId.InnerTextを); // 意志出力真

 

おすすめ

転載: www.cnblogs.com/duanjt/p/11654173.html