【发布时间】:2018-04-18 08:07:37
【问题描述】:
我正在尝试从具有控制代码的游戏中复制对话系统,这些控制代码是类似 HTML/XML 的标签,用于指示文本气泡的行为。例如,更改一段文本的颜色就像<co FF0000FF>Hello World!</co>。文本中不需要这些控制代码,所以Hello <co FF0000FF>World!</co> 或简单的Hello World 也应该解析。
我试图使它类似于 XML 以简化解析,但 XML 需要根级标记才能成功解析,并且文本可能有也可能没有任何控制代码。例如,我可以使用 XElement 解析以下内容。
string Text = "<co value=\"FF0000FF\">Hello World!</co>"
XElement.Parse(Text);
但是,以下失败并出现 XMLException(“根级别的数据无效。第 1 行,位置 1。”):
string Text = "Hello <co value=\"FF0000FF\">World!</co>"
XElement.Parse(Text);
什么是处理这个问题的好方法?有没有一种方法可以在不需要严格的 XML 语法的情况下处理解析字符串中的 XML 元素,或者是否有另一种类型的解析器可以用来实现我想要的?
【问题讨论】:
-
"Hello
World! " 不是 xml。 XML 格式总是以标签开头 -
看看 HtmlAgilityPack [html-agility-pack.net/] - 我认为它有一个宽容的 html 解析器,可能会给你更多的运气
-
你可能有一些运气,比如“Html Agility Pack”,它比 xml 松散得多......但是,坦率地说,你可能只需要从头开始编写它