【问题标题】:XML reader not reading properlyXML 阅读器无法正确读取
【发布时间】:2018-02-12 04:22:20
【问题描述】:

我正在尝试使用 xml 阅读器来读取包含 xml 的 url。我收到一条错误消息,提示字符串为空

        public void readEyeData()
        {
            XmlTextReader reader = new XmlTextReader(ExamInfo.eyeURL);

            while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "point"))
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                        case "point":
                            var xString = reader.GetAttribute("x");
                            var yString = reader.GetAttribute("y");

                            float x = Int32.Parse(xString);
                            float y = Int32.Parse(yString);
                            view.EyeMove(x, y);
                            break;
                    }
                }
            }
}

这是 xml 的示例。我不确定我是否正确使用了阅读器

<studentMovements>
<eyeCoordinates>
<point>
<x>533</x>
<y>521</y>
<ts>522332022.281823</ts>
</point>
<point>
<x>538</x>
<y>521</y>
<ts>522332029.325239</ts>
</point>
<point>
<x>592</x>
<y>529</y>
<ts>522332058.340718</ts>
</point>

请帮忙谢谢!

【问题讨论】:

  • 再次阅读该消息。这对你有什么意义吗? The remote server returned an error: (404) Not Found. '
  • 啊,好吧,所以我修复了 url,但现在我在尝试解析字符串时遇到了另一个异常。它们以 null 的形式出现,所以读者是对的吗?
  • Google for linq to xml
  • 我想知道是否还有其他人可以进一步帮助我
  • xy 是元素而不是属性。我建议你阅读 XML 和 Linq

标签: c# xml-parsing xmlreader


【解决方案1】:

这是一个打印每个 point 的示例

foreach (var point in XDocument.Parse(xml).Descendants("point"))
{
    var x = Int32.Parse(point.Element("x").Value);
    var y = Int32.Parse(point.Element("y").Value);
    Console.WriteLine("({0}, {1})", x, y);
}

请参阅https://dotnetfiddle.net/Yek62r 的小提琴

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    相关资源
    最近更新 更多