我使用ASP.NET C#中的「XmlTextReader」對象來讀取一個xml文件。 在我的代碼我真的需要像C#XML解析:如何區分自閉標籤和其他標籤?
<img src="something" />
和那些內部有元素自結束標記之間進行區分,並且需要結束標記,如:
<div class="anything">
<img src="something" />
</div>
我已經試過hasValue的方法,但它對我來說工作不好。是否有任何其他方式來檢測通過元素讀取之前的執行情況?
我可以使用ReadElementContentAsString()方法,但我真的不想那樣做。在進入之前我需要知道里面是否有東西。或者至少能夠回去。
UPDATE 這是我怎麼看我的代碼
reader.MoveToAttribute("id"); //I know all attributes
if (reader.ReadAttributeValue())
this.idField = reader.Value;
reader.MoveToElement();
bool goOn = true;
while (goOn)
{
reader.Read();
switch (reader.NodeType)
{
case XmlNodeType.Element:
switch (reader.Name)
{
case "div":
DivType newDivTypeItem = new DivType(reader);
this.itemsField.Add(newDivTypeItem);
this.itemsElementNameField.Add(ItemsChoiceType17.div);
break;
other cases...
}
break;
case XmlNodeType.Text:
this.textField.Add(reader.Value);
break;
case XmlNodeType.EndElement:
goOn = false;
break;
}
}
你一定需要使用'XmlTextReader'嗎?如果你的XML很大,那麼它是有意義的,但是否則我會使用LINQ到XML ...... –
事實上,當我第一次需要解析XML時,我並不知道LINQ to XML。不過,我已經根據我的搜索與XmlTextReader一起去了,到目前爲止效果非常好。發佈的問題是我現在唯一的問題。我猜,LINQ to XML會更好。但重做代碼會困難得多。我很感謝用XmlTextReader解決這個問題。 PS:我會更新我的問題 – himura
僅供參考,您不應該使用'new XmlTextReader()'或'new XmlTextWriter()'。自.NET 2.0以來,它們已被棄用。改爲使用'XmlReader.Create()'或'XmlWriter.Create()'。這是爲什麼不通過互聯網學習的完美例子。您的搜索找到了過時的信息。 –