gpt4 book ai didi

xml - 如何使用MACROMAN编码解析xml

转载 作者:行者123 更新时间:2023-12-03 10:09:15 24 4
gpt4 key购买 nike

我试图解析给定的pom内容,但得到err:xml:打开字符集“MACROMAN”:不支持的字符集:“MACROMAN”。
我试图通过设置解码器来禁用严格编码。Strict = false
但这也不起作用。
Here是我要解析此特定pom的“转到游乐场”链接。任何帮助/引用将不胜感激。

<?xml version="1.0" encoding="MACROMAN"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.eclipse.vorto</groupId>
<artifactId>org.eclipse.vorto.parent</artifactId>
<version>0.10.0.M1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>generators</artifactId>

<name>Eclipse Vorto Code Generators</name>
<packaging>pom</packaging>
<modules>
<module>org.eclipse.vorto.codegen.thingworx</module>
<module>org.eclipse.vorto.codegen.javabean</module>
<module>org.eclipse.vorto.codegen.mqtt</module>
<module>org.eclipse.vorto.codegen.webui</module>
<module>org.eclipse.vorto.codegen.webdevice</module>
<module>org.eclipse.vorto.codegen.markdown</module>
<module>org.eclipse.vorto.codegen.ios</module>
<module>org.eclipse.vorto.codegen.latex</module>
<module>org.eclipse.vorto.codegen.bosch.things</module>
<module>org.eclipse.vorto.codegen.coap</module>
<module>org.eclipse.vorto.codegen.aws</module>
<module>org.eclipse.vorto.codegen.lwm2m</module>
<module>org.eclipse.vorto.codegen.prosystfi</module>
<module>org.eclipse.vorto.codegen.kura</module>
</modules>

</project>
`

最佳答案

这些是Go中macintosh编码的已知别名:

var nameMap = map[string]htmlEncoding{
// ...
"csmacintosh": macintosh,
"mac": macintosh,
"macintosh": macintosh,
"x-mac-roman": macintosh,
// ...
}
由于 macroman不在该列表中,因此您可以通过以下方式使用 CharsetReader函数字段来使用自定义别名列表:
    decoder.CharsetReader = charsetReader
其中 charsetReader是:
func charsetReader(charset string, input io.Reader) (io.Reader, error) {
if isCharsetMacintosh(charset) {
return transform.NewReader(input, charmap.Macintosh.NewDecoder()), nil
}
return input, nil
}

var macNames = []string{
"macroman",
"csmacintosh",
"mac",
"macintosh",
"x-mac-roman",
}

func isCharsetMacintosh(charset string) bool {
charset = strings.ToLower(charset)
for _, n := range macNames {
if charset == strings.ToLower(n) {
return true
}
}
return false
}
如果您需要更多信息,这里的答案可能会有所帮助: Unmarshal an ISO-8859-1 XML input in Go。查看 charset.NewReaderLabel函数的源代码并跟踪该函数调用也很有帮助。

关于xml - 如何使用MACROMAN编码解析xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65645058/

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