使用Go解析时,如何检查输入XML中的错误?
我是golang的初学者,正在编写XML解析器 我的目标是检查xml文件的格式是否正确,检查元素和属性是否缺少括号或拼写错误。如果缺少括号或拼写错误,代码可能会抛出异常,通知用户更正错误 让我们以一个具体的xml文件为例,使用Go解析时,如何检查输入XML中的错误?,xml,parsing,go,exception,misspelling,Xml,Parsing,Go,Exception,Misspelling,我是golang的初学者,正在编写XML解析器 我的目标是检查xml文件的格式是否正确,检查元素和属性是否缺少括号或拼写错误。如果缺少括号或拼写错误,代码可能会抛出异常,通知用户更正错误 让我们以一个具体的xml文件为例,example.xml: <?xml version="1.0" encoding="utf-8"?> <servers version="1"> <server>
example.xml
:
<?xml version="1.0" encoding="utf-8"?>
<servers version="1">
<server>
<model name="Cisco" type="modelA"></model>
<serverName>Tokyo_VPN</serverName>
<serverIP>127.0.0.1</serverIP>
</server>
<server>
<model name="Dell" type="modelB"></model>
<serverName>Moscow_VPN</serverName>
<serverIP>127.0.0.2</serverIP>
</server>
</servers>
错误,如缺少括号,即
<model name="Cisco" type="modelA"></model
如何捕获这些错误并抛出错误?如果您查看编码/xml的文档 这里有一个编写自定义封送处理/解组处理的示例,您只需要实现解组处理接口
因此,您的自定义解组器可以在解组和返回错误时检查值“是否有检查这些错误的标准方法?”否。“在解组xml时是否可以写入这些类型的检查?”不可能不写入这些检查。它们是标记器/词缀器的自然特征,用于语法错误,例如缺少括号或引号;以及语法分析器的语法错误,例如不匹配的标记名。最后一个示例是有效的XML,不会产生错误。XML文档可能不符合某些预期的模式,但这与解析无关。Go没有异常。@Peter“您的最后一个示例是有效的XML,不会产生错误。”对。然而,尽管它可能是有效的XML,但对于我来说,它是一种无效的文件格式。因此,我想抓住这个错误,并抛出一个错误。我的“例外”,我的意思是抛出一个错误——我已经编辑以澄清这一点。“不写这些检查是不可能的。对于语法错误,例如缺少括号或引号,它们是标记器/词法分析器的自然功能;对于语义错误,例如不匹配的标记名,它们是语法分析器的自然功能。”是的,我试着编辑这个问题以避免这种混淆。@Peter希望我现在问的有意义;我想有点混乱,我很乐意进一步编辑这个问题。谢谢。我的问题是试图找出如何编写这样一个自定义解组器来检测拼写错误的元素和属性如果你转到我提供的链接顶部,它有自定义解组器的示例
<model name="Cisco" type="modelA"></model
<serverNammme>Moscow_VPN</serverName>
<model namMMe="Cisco" typeE="modelA"></model>
{{ servers} 1 [{{ server} {{ model} } Tokyo_VPN 127.0.0.1} {{ server} {{ model} Dell modelB} Moscow_VPN 127.0.0.2}]}