我試圖發現,通過使用VB XML文檔中存在的特定名稱的元素的總數。應該是一個簡單的任務,但我遇到了一個問題。通的XDocument元件(未元素)作爲字符串
我可以做下面的代碼的工作,但不能將元素的名字作爲一個字符串(在原來的代碼,我從我想遍歷數組這樣做),我沒有收到錯誤visual studio,在編譯時或運行時,它只返回零數量。 我已將原始代碼縮減爲只顯示我遇到問題的部分。
以下代碼有效。
Dim xmlDoc = XDocument.Load("c:\test\xmlFile.xml")
myXMLRowCount = xmlDoc.Root.Elements.<AIOWEB_tPriceBand>.Count()
MsgBox(myXMLRowCount)
我可以找到傳遞變量作爲元素的唯一例子是刪除。 <>並用(MYVARIABLE)取代 - 如下面所示的代碼中,但例如我看到這個上爲元素不元素和不出現的工作是相同的(除非我在命令缺少一個步驟/字符結構體)。
Dim xmlDoc = XDocument.Load("c:\test\xmlFile.xml")
Dim myXmlElement As String = "AIOWEB_tPriceBand"
myXMLRowCount = xmlDoc.Root.Elements(myXmlElement).Count()
MsgBox(myXMLRowCount)
- 編輯*
這裏是有問題的XML文件中的削減例子。 我與上面的代碼行,並再次直接參考著作(顯示5種元素),但在第二實施例與可變返回0的元素這裏進行了測試。
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:od="urn:schemas-microsoft-com:officedata">
<xsd:schema>
<xsd:element name="dataroot">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="AIOWEB_tPriceBand" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="generated" type="xsd:dateTime"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="AIOWEB_tPriceBand">
<xsd:annotation>
<xsd:appinfo>
<od:index index-name="ProductCode" index-key="ProductCode " primary="no" unique="no" clustered="no"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ProductCode" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MinQty" minOccurs="0" od:jetType="longinteger" od:sqlSType="int" type="xsd:int"/>
<xsd:element name="MaxQty" minOccurs="0" od:jetType="longinteger" od:sqlSType="int" type="xsd:int"/>
<xsd:element name="UnitPrice" minOccurs="0" od:jetType="currency" od:sqlSType="money" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<dataroot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" generated="2014-01-16T12:02:35">
<AIOWEB_tPriceBand>
<ProductCode>0000000000001</ProductCode>
<MinQty>1</MinQty>
<MaxQty>0</MaxQty>
<UnitPrice>0.01</UnitPrice>
</AIOWEB_tPriceBand>
<AIOWEB_tPriceBand>
<ProductCode>0000000000002</ProductCode>
<MinQty>1</MinQty>
<MaxQty>0</MaxQty>
<UnitPrice>0.01</UnitPrice>
</AIOWEB_tPriceBand>
<AIOWEB_tPriceBand>
<ProductCode>0000000000003</ProductCode>
<MinQty>1</MinQty>
<MaxQty>0</MaxQty>
<UnitPrice>0.01</UnitPrice>
</AIOWEB_tPriceBand>
<AIOWEB_tPriceBand>
<ProductCode>0000000000004</ProductCode>
<MinQty>1</MinQty>
<MaxQty>0</MaxQty>
<UnitPrice>0.01</UnitPrice>
</AIOWEB_tPriceBand>
<AIOWEB_tPriceBand>
<ProductCode>0000000000005</ProductCode>
<MinQty>1</MinQty>
<MaxQty>0</MaxQty>
<UnitPrice>0.01</UnitPrice>
</AIOWEB_tPriceBand>
</dataroot>
</root>
它適用於我。你能發佈一個可用於重現行爲的示例XML文檔嗎? –
您好史蒂夫,我會得到一個較小的文件,將其裁減5個記錄並去掉敏感信息。謝謝 – user3203148
嗨史蒂夫,我已經將Xml示例添加到了我的原始帖子中。謝謝 – user3203148