2012-11-22 82 views
0
<GetDataSetResult> 
     <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
      <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
      <xs:complexType> 
       <xs:choice minOccurs="0" maxOccurs="unbounded"> 
       <xs:element name="MyTable"> 
        <xs:complexType> 
        <xs:sequence> 
         <xs:element name="myColumn" type="xs:string" minOccurs="0" /> 
        </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
       </xs:choice> 
      </xs:complexType> 
      </xs:element> 
     </xs:schema> 
     <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
      <NewDataSet xmlns=""> 
      <MyTable diffgr:id="MyTable1" msdata:rowOrder="0"> 
       <myColumn>Ahmet</myColumn> 
      </MyTable> 
      <MyTable diffgr:id="MyTable2" msdata:rowOrder="1"> 
       <myColumn>Ali</myColumn> 
      </MyTable> 
      <MyTable diffgr:id="MyTable3" msdata:rowOrder="2"> 
       <myColumn>Veli</myColumn> 
      </MyTable> 
      <MyTable diffgr:id="MyTable4" msdata:rowOrder="3"> 
       <myColumn>Osman</myColumn> 
      </MyTable> 
      <MyTable diffgr:id="MyTable5" msdata:rowOrder="4"> 
       <myColumn>Mahmut</myColumn> 
      </MyTable> 
      <MyTable diffgr:id="MyTable6" msdata:rowOrder="5"> 
       <myColumn>Memed</myColumn> 
      </MyTable> 
      </NewDataSet> 
     </diffgr:diffgram> 
     </GetDataSetResult> 

在上面的XML,我該怎麼選擇xs:element與屬性msdata:IsDataSet?我嘗試了下面的代碼,但沒有成功。的XMLDocument選擇節點使用XPATH與命名空間

Dim doc As New XmlDocument() 
doc.Load("test.xml") 
Dim root As XmlNode = doc.DocumentElement 

Dim nsmgr As New XmlNamespaceManager(doc.NameTable) 
nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema") 
nsmgr.AddNamespace("msdata", "urn:schemas-microsoft-com:xml-msdata") 

Dim node As XmlNode = root.SelectSingleNode(_ 
    "descendant::xs:element[msdata:IsDataSet]", nsmgr) 
Console.WriteLine(node.InnerXml) 

回答

0

問題在其他地方。 在從文件讀取XML到內存的同時,對於某些內部節點奇怪地,它包括"&lt;""&gt;"而不是"<"">"

我替換了這些,問題消失了。

0

IsDataSet是一個屬性,以便爲您的XPath需要descendant::xs:element[@msdata:IsDataSet]選擇那些元素,其中存在該屬性或descendant::xs:element[@msdata:IsDataSet = 'true']以選擇該屬性的值爲true的那些元素。

+0

這也不起作用。 –