不久前,我问了一个关于 MSXML 中命名空间的使用的问题。起初,我用 XPath
*[local-name()]
-hack 绕过了整个事情(请参阅我之前的帖子),但由于良心危机,我决定以正确的方式做事。 (噢!)
考虑以下 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Root xsi:schemaLocation="http://www.foo.bar mySchema.xsd" xmlns="http://www.foo.bar" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<MyElement>
</MyElement>
</Root>
当我尝试使用
IXMLDOMDocument3.setProperty('SelectionNamespaces', NSString);
添加这些命名空间时,出现以下错误:
“SelectionNamespaces 属性值无效。仅格式正确的 xmlns 允许使用属性。”。
删除命名空间
xsi:schemaLocation="http://www.foo.bar mySchema.xsd"
后,一切都运行顺利。我在这里做错了什么? XML 中是否有错误? MSXML 是罪魁祸首吗?
xsi:schemaLocation="..."
不是命名空间定义,它是 xsi 命名空间中 <Root>
元素的属性。
因此,像您一样从命名空间列表中删除它已经是解决方案了。