- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我不想再问 XPath/XmlNamespaceManager 问题,但我似乎无法弄明白。
我使用了 XpathVisualizer 工具,它可以使用 XPath“//FuelGradeMovement”正确检测节点。它识别 namespace 并像那样评估 XPath。
我只想检查节点“FuelGradeMovement”是否存在。很容易。但不,行不通。
很明显,我正在 xpath 的节点甚至没有前缀,但如果我不使用 namespace 管理器,我会收到运行时错误,因为文档中的其他节点确实有前缀。
并且对于命名空间,由于某种原因它只是看不到节点。
我正在尝试解析此文档:
<?xml version="1.0"?>
<NAXML-MovementReport version="3.4" xmlns="http://www.naxml.org/POSBO/Vocabulary/2003-10-16" xmlns:radiant="http://www.radiantsystems.com/NAXML-Extension" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.naxml.org/POSBO/Vocabulary/2003-10-16 NAXML-PBI34RadiantExtended.xsd">
<TransmissionHeader>....
</TransmissionHeader>
<FuelGradeMovement/>
</NAXML-MovementReport>
使用此代码:
using ( var fs = file.OpenRead() )
{
var x = new XPathDocument( fs );
var nav = x.CreateNavigator();
var mgr = new XmlNamespaceManager( nav.NameTable );
mgr.AddNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
mgr.AddNamespace( "xmime", "http://www.w3.org/2005/05/xmlmime" );
mgr.AddNamespace( "radiant", "http://www.radiantsystems.com/NAXML-Extension" );
mgr.AddNamespace( "ns1", "http://www.naxml.org/POSBO/Vocabulary/2003-10-16" );
var iterator = nav.Select( "//FuelGradeMovement", mgr );
return iterator.Count > 0;
}
我尝试了很多组合,但我没有发现我的错误。谁能帮忙?
谢谢!
最佳答案
您正在指定 namespace 管理器 - 但不是 namespace 。 FuelGradeMovement
元素从其父级继承了 "http://www.naxml.org/POSBO/Vocabulary/2003-10-16"
命名空间 URI,所以我相信你想要:
var iterator = nav.Select("//ns1:FuelGradeMovement", mgr);
元素没有指定命名空间前缀并不意味着它不在命名空间中。
请注意,除非您真的需要复杂的 XPath 查询,否则 LINQ to XML 会使所有这些变得简单得多。例如:
var doc = XDocument.Load(fs);
XNamespace ns = "http://www.naxml.org/POSBO/Vocabulary/2003-10-16";
return doc.Descendants(ns + "FuelGradeMovement").Any();
关于c# - 尽管有 XmlNamespaceManager,XPathNavigator 还是找不到节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28565364/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!