C#XML解析:如何区分自动关闭标记和其他标记?
我正在使用ASP.NET C#中的“XmlTextReader”对象来读取xml文件。 在我的代码中,我真的需要区分像C#XML解析:如何区分自动关闭标记和其他标记?,c#,xml-parsing,C#,Xml Parsing,我正在使用ASP.NET C#中的“XmlTextReader”对象来读取xml文件。 在我的代码中,我真的需要区分像 <img src="something" /> 这是你想要的吗?您究竟是如何阅读您的文档的,这样才会出现此问题的?您是否确实需要使用XmlTextReader?如果您的XML是巨大的,这是有意义的,但否则我会使用LINQtoXML…实际上,当我第一次需要解析XML时,我不知道LINQtoXML。然而,根据我的搜索结果,我选择了XmlTextReader,到目前为止
<img src="something" />
这是你想要的吗?您究竟是如何阅读您的文档的,这样才会出现此问题的?您是否确实需要使用
XmlTextReader
?如果您的XML是巨大的,这是有意义的,但否则我会使用LINQtoXML…实际上,当我第一次需要解析XML时,我不知道LINQtoXML。然而,根据我的搜索结果,我选择了XmlTextReader,到目前为止效果非常好。发布的问题是我现在唯一的问题。我想LINQ到XML会更好。但是重新编写代码要困难得多。如果能用XmlTextReader解决这个问题,我将不胜感激。PS:我将更新我的问题,仅供参考,您不应使用new XmlTextReader()
或new XmlTextWriter()
。自.NET 2.0以来,它们一直被弃用。改用XmlReader.Create()
或XmlWriter.Create()
。这是一个很好的例子,说明为什么不使用互联网学习。您的搜索发现了过时的信息。谢谢您的提示。我将进行更改Shello,我已经添加了用于阅读的循环。我为每个可能的元素创建了一个类,每个类构造函数都有一个XmlTextReader对象作为参数。结果是元素的递归读取。代码非常健壮,但是缺少一些元素的结束标记给我带来了问题。我只需要检测他们那是不是你想要的财产?是的,这似乎就是我要找的!我很惊讶我怎么会错过它。我试图成为恶魔。是。。。属性找不到它。我真蠢。对不起,谢谢你。
<div class="anything">
<img src="something" />
</div>
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;
}
}