2011-03-04 73 views
0

我有一個來自數據庫的string。我想讀這個爲XML。字符串看起來像下面在.NET 2.0中以XML格式讀取字符串

<settings> 
    <setting name="OfferIDs" value="47,48,49,50,51,52,53,76,77,78,79" /> 
    <setting name="someothersetting" value="" /> 
    <setting name="anothersetting" value="" /> 
</settings> 

我想獲得的OfferIDs值作爲使用VB.NET的字符串。提前謝謝了。

回答

2

沒有訪問LINQ,你的代碼應該是這樣的......

Dim xmlDoc As New System.Xml.XmlDocument 
xmlDoc.Load("YourXmlFile.xml") 
Dim OfferIDs As String = xmlDoc.SelectSingleNode("//settings/setting[@name='OfferIDs']").Attributes("value").Value 

這應該給你你在找什麼。

5

編輯:要使用.NET 2,我可能會使用XmlDocument

Dim document = new XmlDocument() 
document.LoadXml(xml) 

那麼你需要通過其name屬性尋找合適的元素的文檔瀏覽,然後採取value該元素的屬性。我在XmlDocument這些天生疏,但我希望這足夠讓你開始...


最簡單的方法是可能與LINQ加載它以XML:

Dim settings = XElement.Parse(xml) 

...然後查詢它。在C#中很容易,但是我的VB-fu使LINQ查詢部分失敗。

C#的會是這樣的:

XElement settings = XElement.Parse(xml); 
string offerIds = settings.Elements("setting") 
          .Where(x => (string) x.Attribute("name") == "OfferIDS") 
          .Select(x => (string) x.Attribute("value")) 
          .Single(); 
+1

的解決方案是在.NET 2.0,但答覆 – Chin 2011-03-04 17:26:43

+0

@Chin千恩萬謝遺憾的是不能使用LINQ:在未來,這將是值得在提問中提到這一點。我傾向於假定至少.NET 3.5這些天,考慮多久它已經出來。編輯... – 2011-03-04 17:27:59

+0

對不起,將來會做。 – Chin 2011-03-04 17:29:50

0

您可以使用StringReader結合XmlReader(快速,非緩存,只向前訪問XML數據)從字符串中讀取xml。 在C#:

string source = GetXmlAsString(); 
using (StringReader xml = new StringReader (source)) { 
    using (XmlReader reader = XmlReader.Create (xml)) { 
     while (reader.Read()) { 
      if (reader.IsStartElement ("setting")) { 
       string attrName = reader.GetAttribute ("name"); 
       if (attrName == "OfferIDs") { 
        string attrValue = reader.GetAttribute ("value"); 
       } 
      } 
     } 
    } 
} 

在VB:

Dim source As String = GetXmlAsString() 
Using xml As New StringReader(source) 
    Using reader As XmlReader = XmlReader.Create(xml) 
     While reader.Read() 
      If reader.IsStartElement("setting") Then 
       Dim attrName As String = reader.GetAttribute("name") 
       If attrName = "OfferIDs" Then 
        Dim attrValue As String = reader.GetAttribute("value") 
       End If 
      End If 
     End While 
    End Using 
End Using