【发布时间】:2013-08-20 17:37:47
【问题描述】:
我在 ASP.NET C# 中使用“XmlTextReader”对象来读取 xml 文件。 在我的代码中,我真的需要区分像
这样的自结束标签<img src="something" />
以及那些内部有元素并需要结束标签的元素,例如:
<div class="anything">
<img src="something" />
</div>
我已经尝试过 HasValue 方法,但对我来说效果不佳。有没有其他方法可以在实际读取元素之前检测到这一点?
我可以使用 ReadElementContentAsString() 方法,但我并不想这样做。在进去之前我需要知道里面是否有东西。或者至少可以回去。
更新 这就是我阅读代码的方式
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 to XML... -
实际上,当我第一次需要解析 XML 时,我并不了解 LINQ to XML。但是,根据我的搜索,我选择了 XmlTextReader,到目前为止它工作得非常好。发布的问题是我现在唯一的问题。我猜LINQ to XML会更好。但是重做代码会困难得多。我很感激用 XmlTextReader 解决这个问题。 PS:我会更新我的问题
-
仅供参考,您不应使用
new XmlTextReader()或new XmlTextWriter()。自 .NET 2.0 以来,它们已被弃用。请改用XmlReader.Create()或XmlWriter.Create()。这是一个完美的例子,说明为什么不通过互联网学习。您的搜索发现了过时的信息。 -
感谢您的提示。我会做出改变
标签: c# xml-parsing