gpt4 book ai didi

xml - 没有定义前缀的 XML 文档的前缀是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 02:27:04 29 4
gpt4 key购买 nike

更新感谢 florent,我现在意识到我在问题中使用了错误的术语(最初:“没有定义 namespace 的 XML 文档的 namespace 是什么?”)。
另外,我想现在我要问两个问题:
1. 可以为没有前缀的 XML 文档分配前缀吗? (可能是,但如何使用经典 ASP 做到这一点?)
2. 没有定义前缀的XML文档中节点的XPath定位路径是什么?如果这甚至可能的话。


我有经典的 ASP 代码,它使用 MSXML2.ServerXMLHTTP.6.0 对象检索 XML 文档,但 XML 文档没有定义前缀。我无法更改 XML 文档的制作方式。

这是 XML 的样子:

<?xml version="1.0" standalone="yes"?>
<SearchResultsResponse xmlns="http://openapi.somesite.com/openapi-3.0.0">
[...]
</SearchResultsResponse>


该文档通过 .responseXML 属性自动解析和访问。但是通过以下方式查找节点:

Set objData = obj_http.responseXML.selectSingleNode("//someNodeName")
Response.Write "Data: " & objData.Text

没用。 (我收到“需要对象”错误消息,这意味着没有找到节点。)并且

Response.Write obj_http.responseXML.documentElement.prefix 

给我一​​个空字符串。


实现此目的的一种方法是使用 .selectSingleNode("//*[local-name() = 'someNodeName']"),但我猜这在较大的 XML 文档中效率不高。 (或者我错了吗?)

我读过类似这样的内容:.selectSingleNode("//ns:rootNodeName/ns:childNodeName"),其中“ns”是定义的前缀,应该是正确的方法,但是那么如果没有定义前缀我应该使用什么?

最佳答案

据我了解“http://openapi.somesite.com/openapi-3.0.0”是文档的命名空间。它只是没有定义前缀,所以这是默认命名空间。

I have read that something like: .selectSingleNode("//ns:rootNodeName/ns:childNodeName"), where 'ns' is the namespace defined, should be the way to go, but then what should I use for the namespace if none is defined?

这里的“ns”不是命名空间而是命名空间前缀。我不是 ASP 人员,所以我对代码帮助不大,但您仍然应该能够为节点查找定义 namespace 。如果您不想使用默认命名空间,您甚至应该能够使用前缀重新定义它。

关于xml - 没有定义前缀的 XML 文档的前缀是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13826295/

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