gpt4 book ai didi

ruby - 如何将xml文件转换为yaml?

转载 作者:太空宇宙 更新时间:2023-11-03 16:07:01 24 4
gpt4 key购买 nike

基本上问题说明了一切,我如何将 xml 文件转换为 yaml?

我已经试过了:

require 'active_support/core_ext/hash/conversions'
require 'yaml'

file = File.open("data/mconvert.xml", "r")
hash = Hash.from_xml(file.read)
yaml = hash.to_yaml
File.open("data/mirador.yml", "w") { |file| file.write(yaml) }

但是,我收到“异常解析”错误。我以为那是因为我在 xml 标记名称中有破折号,所以我用 dashcharacterr 替换了破折号,但这仍然没有用。

最佳答案

如果我们看一下 XML 1.0 规范,我们会看到 start tags看起来像这样:

[40]    STag ::= '<' Name (S Attribute)* S? '>'

然后在其他地方,我们找到the definition of Name :

[4]     NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]

您会注意到 - 不在 NameStartChar 中,因此:

<-vikings->1336162202</-vikings->

不是有效的 XML,这部分代码:

hash = Hash.from_xml(file.read)

失败是因为您的文件不包含 XML,它包含看起来像 XML 但不是真正的 XML 的文本。

修复您的 data/mconvert.xml 文件以包含真正的 XML,然后重试。


如果您在 Rails 控制台中尝试一个简单的实验,您将看到发生了什么:

> Hash.from_xml('<-vikings->1336162202</-vikings->')
REXML::ParseException: #<REXML::ParseException: malformed XML: missing tag start
Line: 1
Position: 33
Last 80 unconsumed characters:
<-vikings->1336162202</-vikings->>

注意到“格式错误的 XML:缺少标记开始”吗?

关于ruby - 如何将xml文件转换为yaml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11995299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com