0
我有這樣的XML的LINQ to XML:序列不包含任何元素
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Nieuws" xml:space="preserve">
<value>News</value>
</data>
<data name="Pagina's" xml:space="preserve">
<value>Pages</value>
</data>
<data name="searchreasults" xml:space="preserve">
<value>There were no matches found</value>
</data>
</root>
而且我也有這樣的方法,在這裏我需要兩個文件,並從他們採取一些值,然後我的所有值合併成一個對象在所述第二查詢:
Public Shared Function RetrieveTranslation(ByVal filefrom As String, ByVal fileto As String) As List(Of clsTranslation)
Dim valuefrom = (From l In XElement.Load(fileto).Elements("data") Select l.Element("value").Value).FirstOrDefault
Dim valuetrans = From vl In XElement.Load(filefrom).Elements("data") Select (New clsTranslation With {.Filename = filefrom, .Value = vl.Element("value").Value, .Valueto = valuefrom.ToString, .TranslationId = vl.Attribute("name").Value})
Return valuetrans.ToList
End Function
因此,問題是,當我運行的代碼,有一個「序列不包含任何元素」錯誤在第一個查詢(valuefrom)。我調試過,它說查詢中沒有任何內容,但我不明白爲什麼,因爲我做了類似的事情,從來沒有像這樣的問題。
任何提示?
在此先感謝,
Alf。
P.S:哦!順便說一句,我很想知道是否做得像我一樣做得很好,從兩個查詢中創建一個對象,並將第一個值放入第二個查詢中。謝謝!
那麼你已經發布了一小段標記,甚至不是一個格式良好的XML文檔。我懷疑這個問題與你沒有顯示的部分文檔中聲明的命名空間有關。或者向我們展示這些「數據」元素的祖先元素中的任何名稱空間聲明,或嘗試使用http://msdn.microsoft.com/en-us/library/bb387093.aspx幫助您自己弄清楚它們。 – 2011-05-25 15:01:20
嗯...我會檢查頁面。我也更新了整個XML文檔,儘管我發佈的部分是最重要的 – alfizqu 2011-05-25 15:17:28
我無法重現您的示例XML問題,我將完整的XML示例保存爲「XMLFile1.xml」,然後只執行兩行代碼'Dim valuefrom =(From l In XElement.Load(「.. \ .. \ XMLFile1.xml」)。Elements(「data」)選擇l.Element(「value」)。Value).FirstOrDefault'和'Console .WriteLine(valuefrom)',我不會收到任何錯誤,而是輸出「News」。所以不知何故,你的實際代碼產生的錯誤必須是不同的。 – 2011-05-25 16:00:14