我有来自DB的string
。我想将其视为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>
我希望使用VB.NET将OfferIDs
的值作为字符串。非常感谢提前。
答案 0 :(得分:5)
编辑:要使用.NET 2,我可能会使用XmlDocument
:
Dim document = new XmlDocument()
document.LoadXml(xml)
然后,您需要浏览文档,通过其name
属性查找相应的元素,然后获取该元素的value
属性。这些天我在XmlDocument
生锈了,但希望这足以让你开始......
最简单的方法可能是使用LINQ to 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 :(得分: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
这应该可以为您提供所需的信息。
答案 2 :(得分: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