我這種格式有一個plist中:解析內層標籤
<plist version="1.0">
<array>
<dict>
<key>Title</key>
<string>Chapters</string>
<key>Items</key>
<array>
<dict>
<key>Title</key>
<string>XYZ</string>
</dict>
<dict>
<key>Title</key>
<string>ABC</string>
</dict>
</array>
</dict>
<dict>
<key>Title</key>
<string>ChaptersONE</string>
<key>Items</key>
<array>
<dict>
<key>Title</key>
<string>ASDF</string>
</dict>
</array>
</dict>
</array>
我有一個字符串和列表中的一個類別章類:
我需要這樣的: 章節包含列表副標題像XYZ和ABC等... ChaptersONE包含ASDF一樣副主題列表等等...
現在,我已經嘗試過這樣的:
XDocument doc = XDocument.Load(FileName);// plist file name
XElement plist = doc.Element("plist");
XElement array = plist.Element("array");
Chapters chapters = null;
String keyValue = String.Empty;
chapters.listOfItems = new List<Chapters>();
using (XmlReader reader = array.CreateReader())
{
reader.MoveToContent();
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name == "dict")
{
chapters = new Chapters();
listOfItems.Add(chapters);
}
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 (highwayCode != null && reader.NodeType == XmlNodeType.Text || reader.NodeType == XmlNodeType.CDATA)
{
switch (keyValue)
{
case "Title":
chapters.Header = reader.Value;
break;
case "Items":
break;
default:
break;
}
}
}
}
}
}
但我所有的主標題(像章和ChaptersOne頭),還有子主題只是分配給字符串,我在這裏做錯了什麼?
如何解決這個問題?
編輯 章節應該包含像XYZ和ABC副主題列表等等... ChaptersONE應該包含ASDF一樣副主題列表等等...
你的問題不清楚。你的課怎麼看?預期的輸出如何?什麼是'highwayCode'? – MarcinJuraszek
另外,爲什麼你需要使用'基於XmlReader'的代碼而不是基本的Linq-to-Xml? –
請參閱我的編輯傢伙 – user2056563