有人可以指导我如何解析这个Xml类型字符串吗?
<data>
<LastUpdate></LastUpdate>
<AC1>12</AC1>
<AC2>13</AC2>
<AC3>14</AC3>
<Moter></Moter>
<Fan1></Fan1>
<Fan2></Fan2>
<TubeLight1></TubeLight1>
<TubeLight2></TubeLight2>
<Moter></Moter>
<CloseAll></CloseAll>
</data>
我需要在String或List或字典中获得所有结果 AC1 = 12,AC2 = 13,等等
提前举手
答案 0 :(得分:1)
使用XDocument.Parse方法:
string data = @"<data>
<LastUpdate></LastUpdate>
<AC1>12</AC1>
<AC2>13</AC2>
<AC3>14</AC3>
<Moter></Moter>
<Fan1></Fan1>
<Fan2></Fan2>
<TubeLight1></TubeLight1>
<TubeLight2></TubeLight2>
<Moter></Moter>
<CloseAll></CloseAll>
</data>";
XDocument xmlDoc = XDocument.Parse(data);
var parsedData = from obj in xmlDoc.Descendants("data")
select new
{
LastUpdate = obj.Element("LastUpdate").Value,
AC1 = obj.Element("AC1").Value,
AC2 = obj.Element("AC1").Value,
... and so on
}
祝你好运!
答案 1 :(得分:0)
这应该可以,但您必须从XML中删除重复的Moter
元素 - 只有这样您才能使用字典:
XDocument doc = XDocument.Load("test.xml");
var dictionary = doc.Descendants("data")
.Elements()
.ToDictionary(x => x.Name.ToString(), x => x.Value);
string ac1Value = dictionary["AC1"];
答案 2 :(得分:0)
如果您想使用Linq转换为XML,那么它看起来像是:
XElement root = XElement.Parse(s);
Dictionary<XName, string> dict = root
.Elements()
.Select(x => new {key = x.Name, value = x.Value})
.ToDictionary(x => x.key, x => x.value);
确保按照自己的方式处理重复项。
答案 3 :(得分:0)
我更喜欢使用XLinq。这是示例(在VB.NET中):
Private Sub ParseIt()
Dim xml = XElement.Parse(sampleXml)
Dim dic As New Dictionary(Of String, String)
For Each item In xml.Elements
dic.Add(item.Name.LocalName, item.Value)
Next
End Sub
你也可以像这样使用它(我更喜欢这种方法):
Private Sub ParseIt()
Dim xml = XElement.Parse("")
Dim dic = (From item In xml.Elements).ToDictionary(Function(obj) obj.Name.LocalName, Function(obj) obj.Value)
End Sub
答案 4 :(得分:0)
如果要将xml数据字符串解析为'Dataset'
,则可以使用此示例
string xmlString = @"/*.. .. .*/";
DataSet data = new DataSet();
data.ReadXml(new StringReader(xmlString));