我们目前正在尝试使用LIBXML2组件解析XML,并且在包含包含非ASCII字符的命名空间(例如此é
)的XML时发现了与之相关的问题。
示例XML文件:
< ?xml version="1.0" encoding="UTF-8"?>
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<Helloé xmlns="http://schemas/Helloé">
<ns0:Helloé xmlns:ns0="http://schemas/Helloé" />
</Helloé>
</SOAP:Body>
</SOAP:Envelope>
通过使用小型测试程序对DOM解析器进行测试,我们能够检查并确认这是受支持的。当我们尝试检查所提供的此方案的有效性时,W3School XML online parser我们收到以下错误:
我们也通过其他在线资源对其进行了测试,就像this一样,即使是相同的 - 同样的错误信息。
有人可以告诉我们是否有办法确定在线工具/资源,我们可以将其指向libxml2
?
或者可以测试这个的示例程序?
答案 0 :(得分:1)
只需在命令行上通过libxml2的xmllint
运行该文件:
$ xmllint --noout so.xml
so.xml:4: namespace error : xmlns: 'http://schemas/Helloé' is not a valid URI
<Helloé xmlns="http://schemas/Helloé">
^
so.xml:5: namespace error : xmlns:ns0: 'http://schemas/Helloé' is not a valid URI
<ns0:Helloé xmlns:ns0="http://schemas/Helloé" />
^
此外,用正确的UTF-8%-escape替换é
也可以。只需将URI更改为http://schemas/Hello%C3%A9
。