簡體   English   中英

如果根節點2 xmlns url和一個xmlns沒有前綴,如何獲取“ xpath”值?

[英]How to get 'xpath' value if the root node 2 xmlns url and one xmlns don't have prefix?

我有兩個xmlns屬性,我嘗試對一個節點進行xpath,但是它不起作用

我正在使用XmlDocument,並且嘗試從該xml進行xpath。 它返回null,因為根節點具有兩個xml屬性。

   <CreateRequest 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns="http://fex.com/ws/openship/v15">
       <WebAuthenticationDetail>
           <Parent>
               <Key/>
               <Password />
           </Parent>
           <UserCredential>
               <Key />
               <Password />
           </UserCredential>
       </WebAuthenticationDetail>
       <ClientDetail>
           <AccountNumber />
           <MeterNumber />
       </ClientDetail> 
   </CreateRequest>

   var nsmgr = new XmlNamespaceManager(xml.NameTable);
   nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");     
   var     
   nodes=xml.SelectNodes("/CreateRequest/ClientDetail/AccountNumber",nsmgr);  

您的xml具有默認名稱空間。 您必須添加它,為其分配一個前綴(我使用ns )。 然后在xpath中使用此前綴。

如下使用它:

var nsmgr = new XmlNamespaceManager(xml.NameTable);
nsmgr.AddNamespace("ns", "http://fex.com/ws/openship/v15");
var nodes = xml.SelectNodes("/ns:CreateRequest/ns:ClientDetail/ns:AccountNumber", nsmgr);

您可以忽略名稱空間。

xml.SelectNodes("/*[local-name()='CreateRequest']/*[local-name()='ClientDetail']/*[local-name()='AccountNumber']");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM