-5
我试图解析XML,并分配给对象:通过移动到每个节点类型解析XML文档
XML文件:
<plist version="1.0">
<array>
<dict>
<key>SubTitle</key>
<array>
<dict>
<key>IDs</key>
<array>
<string>CD1</string>
<string>CD2</string>
<string>CD3</string>
</array>
<key>Title</key>
<string>Data One</string>
<key>ABC</key>
<string></string>
<key>XYZ</key>
<string></string>
<key>HasLessons</key>
<true/>
</dict>
<dict>
<key>IDs</key>
<array>
<string>DDC1</string>
<string>DDC2</string>
<string>DDC3</string>
</array>
<key>Title</key>
<string>Data Two</string>
<key>ABC</key>
<string></string>
<key>XYZ</key>
<string></string>
<key>HasLessons</key>
<true/>
</dict>
</array>
<key>MainTitle</key>
<string>Collection of Data</string>
</dict>
</array>
</plist>
我试图解析如下:
XDocument doc = XDocument.Load(FileName);
XElement plist = doc.Element("plist");
XElement array = plist.Element("array");
int topicID = 0;
Topic topic = new Topic();
String keyValue = String.Empty;
topicCollection = new List<Topic>();
using (XmlReader reader = array.CreateReader())
{
reader.MoveToContent();
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name == "dict")
{
topicID++;
topic = new Topic();
topic.TopicID = topicID;
topicCollection.Add(topic);
}
else if (reader.Name == "key")
{
if (!reader.Read())
{
break;
}
else if (reader.NodeType == XmlNodeType.Text || reader.NodeType == XmlNodeType.CDATA)
{
keyValue = reader.Value;
}
}
else if (reader.Name == "string")
{
if (!reader.Read())
{
break;
}
else if (topic != null && reader.NodeType == XmlNodeType.Text || reader.NodeType == XmlNodeType.CDATA)
{
switch (keyValue)
{
case "Title":
topic.SubTitle = reader.Value;
break;
case "IDs":
topic.FileNames.Add(reader.Value);
break;
case "ABC":
topic.ABC = int.Parse(reader.Value);
break;
case "XYZ":
topic.XYZ = reader.Value;
break;
case "MainTitle":
topic.MainTitle = reader.Value;
break;
default:
break;
}
}
}
}
else if (reader.NodeType == XmlNodeType.EndElement)
{
if (reader.Name == "dict" && topic != null)
{
}
}
}
}
我在这里做错了什么? 我试图在第一个屏幕中显示所有主标题,然后点击每个主标题显示字幕列表并点击每个字幕显示的ID标题列表。
另请参阅http://stackoverflow.com/questions/22146447/linq-to-xml-with-nested-dictionary-and-array和http://stackoverflow.com/questions/22156794/xml-parsing-with -dictionarystring-listmyobject –
只是想知道 - 为什么你正在创建XDocument,但使用XmlReader?甚至更有趣的问题 - 为什么你不使用你昨天问的问题解决方案http://stackoverflow.com/questions/22156794/xml-parsing-with-dictionarystring-listmyobject –
@SergeyBerezovskiy我很抱歉地说,但是当我试图打印的值不打印任何东西,而且我想这是我试图达到结果 – user3114009