【发布时间】:2016-06-28 18:53:05
【问题描述】:
我试图在 C# Visual Studio 中读取 xml,但不知道如何做得很好。首先,我尝试了一个 if 块,如下所示:
if (ReadToNextDescendant("painted_blue"))
{
// access the coordinates inside and do some work
// this works
}
它成功了,我能够从绘制的蓝色坐标中提取数据。但是,我再次尝试了 wall_horizontal 并没有成功。因此我得出结论,我需要某种新功能,或者可能需要一种不同的方法。但是,我并不精通 XML 解析。一方面,我不完全理解 ReadToDescendant 做了什么,以及为什么它第二次不起作用。有人能指出我正确的方向吗?
<painted_blue>
(0,0)
(1,0)
(1,5)
(2,2)
</painted_blue>
<walls_horizontal>
(1,2)
(1,3)
(1,4)
(2,1)
(2,2)
</walls_horizontal>
<walls_vertical>
(1,1)
(1,2)
(1,3)
(2,0)
(2,1)
</walls_vertical>
【问题讨论】:
-
看起来
ReadToNextDescendant是您自己的类中的一个方法,因为您没有在任何东西上调用它。如果您提供minimal reproducible example,这将非常有帮助。但总的来说,我建议在使用 XML 时使用 LINQ to XML。但是,您的 XML 的当前结构确实很不幸 - 看起来每个元素都应该有 5 个子元素。 -
查找 XElement 类。它对于这类事情非常有用,并且是 Jon Skeet 在谈到 LINQ to XML 时所指的部分内容。正如 Jon Skeet 所说,您还应该考虑修复您的 XML,以便这些坐标是具有 x 和 y 属性的子元素。
-
值得注意并补充:您的 XML 不是有效的 XML。
标签: c# xml parsing xml-parsing