嵌套 xml 元素中的命名空间
我已经看到了我现在遇到的问题的一些答案,但我的答案是嵌套的。
我有一个如下所示的 xml:
>
<em>
<type xmlns="http://www.sitcom-project.org/sitcom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<model>
<implemented_with>comoco</implemented_with>
<implemented_in>perl</implemented_in>
<cash_flow>casual</cash_flow>
<interaction>conventional</interaction>
</model>
</type>
</em>
现在,我如何访问 Implemented_with 节点的元素?
ofc 我可以通过这种方式访问 xmlList: 命名空间 ns = www.sitcom-project.org/sitcom; 类型.ns::模型; 但现在,我如何访问模型 xmlList 中的 Implemented_with 节点? 我尝试了 type.ns::model.implemented_with,但没有成功。有人知道吗? 谢谢
I have seen afew answers to the problem i am having now but mine is that of a nested one.
I have an xml looking like this:
>
<em>
<type xmlns="http://www.sitcom-project.org/sitcom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<model>
<implemented_with>comoco</implemented_with>
<implemented_in>perl</implemented_in>
<cash_flow>casual</cash_flow>
<interaction>conventional</interaction>
</model>
</type>
</em>
now, how do i access the element of the implemented_with node?
ofc i could access the xmlList this way:
namespace ns = www.sitcom-project.org/sitcom;
type.ns::model;
but now, how do i access the implemented_with node in the model xmlList?
i tried type.ns::model.implemented_with, but didn't work. Anyone got any idea?
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有几种方法可以做到这一点,但最好的方法是在每次点访问之前使用名称空间前缀。在您的情况下,您要做的第一件事就是隔离名称空间。您可以通过将命名空间硬编码到新的命名空间对象中来做到这一点......即;
或者更好的方法是从适当的节点中提取它。在下面的代码中,我获取了类型节点上声明的所有名称空间(作为数组),并且仅针对列表中的第一个名称空间。因为我事先不知道名称空间,所以我必须使用 Children() 方法来检索它。
完成此操作后,您可以使用名称空间语法来深入研究您的模型。
这可能有点冗长,因此您可以使用以下语法设置默认命名空间。我个人不喜欢这个,但它确实有效。
一句简单的话就可以了。
使用默认语法
希望这有帮助。
There are a couple ways to do this, but the best way is to use a namespace prefix before each dot access. In your case the first thing you want to do is to isolate the namespace. You can do this by hard coding the namespace into a new namespace object... ie;
Or a better way is to just extract it from the appropriate node. In the following code I am getting all the namespaces (as an array) declared on the type node, and just targeting the first one in the list. Because I don't know the namespace beforehand, I have to retrieve it using the children() method.
Once you have accomplished this, you can use namespace syntax to dig into your model.
This can be a little verbose, so you can set the default namespace using the following syntax. I don't like this personally, but it does work.
A simple one-liner could be.
Using the default syntax
Hope this helps.