Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#XML解析:如何区分自动关闭标记和其他标记?_C#_Xml Parsing - Fatal编程技术网

C#XML解析:如何区分自动关闭标记和其他标记?

C#XML解析:如何区分自动关闭标记和其他标记?,c#,xml-parsing,C#,Xml Parsing,我正在使用ASP.NET C#中的“XmlTextReader”对象来读取xml文件。 在我的代码中,我真的需要区分像 <img src="something" /> 这是你想要的吗?您究竟是如何阅读您的文档的,这样才会出现此问题的?您是否确实需要使用XmlTextReader?如果您的XML是巨大的,这是有意义的,但否则我会使用LINQtoXML…实际上,当我第一次需要解析XML时,我不知道LINQtoXML。然而,根据我的搜索结果,我选择了XmlTextReader,到目前为止

我正在使用ASP.NET C#中的“XmlTextReader”对象来读取xml文件。 在我的代码中,我真的需要区分像

<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;
        }
    }