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?我尝试了下面的代码,但没有成功。

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)
4

2 回答 2

0

IsDataSet是一个属性,因此对于您的 XPath,您需要descendant::xs:element[@msdata:IsDataSet]选择存在该属性的descendant::xs:element[@msdata:IsDataSet = 'true']那些元素或选择该属性具有值的那些元素true

于 2012-11-22T18:29:44.260 回答
0

问题出在其他地方。在将 XML 从文件读取到内存时,它奇怪地包含"&lt;"and"&gt;"而不是"<"">"for 一些内部节点。

我更换了这些,问题就消失了。

于 2012-11-23T08:38:42.623 回答