- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
这是我正在使用的 XML 示例(可从任何 wiki 的 Special:Export/SomePage 结果中检索):
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.4/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.4/ http://www.mediawiki.org/xml/export-0.4.xsd" version="0.4" xml:lang="en">
<siteinfo>
<sitename>Wikipedia</sitename>
<base>http://en.wikipedia.org/wiki/Main_Page</base>
<generator>MediaWiki 1.16wmf4</generator>
<case>first-letter</case>
<namespaces>
<namespace key="-2" case="first-letter">Media</namespace>
<namespace key="-1" case="first-letter">Special</namespace>
<namespace key="0" case="first-letter" />
...
</namespaces>
</siteinfo>
</mediawiki>
我已经尝试了所有我能想到的直接“跳转”到 siteinfo 节点并迭代结果,但没有任何效果,除非我从根向下手动浏览每个子节点。我已经尝试了各种 .Move* 和 .Select* 方法的一百万种变体,看起来我只是在用头撞墙,但我当前的变体看起来像这样:
StringReader strr = new StringReader(_rawData);
XPathDocument xd = new XPathDocument(XmlReader.Create(strr, Bot.XmlReaderSettings));
XPathNavigator xn = xd.CreateNavigator();
XPathNodeIterator xni = xn.Select("/mediawiki/siteinfo");
foreach (XPathNavigator nav in xni)
Console.WriteLine(nav.LocalName);
这不会返回任何结果。我做错了什么?
最佳答案
欢迎使用 XML namespace 。您需要在前缀和根元素的 xmlns
之间创建映射。例如,这段代码对我有用:
using (var r = File.OpenText("test.xml")) {
XPathDocument xd = new XPathDocument(XmlReader.Create(r));
XPathNavigator xn = xd.CreateNavigator();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xn.NameTable);
nsmgr.AddNamespace("mw", "http://www.mediawiki.org/xml/export-0.4/");
XPathNodeIterator xni = xn.Select("/mw:mediawiki/mw:siteinfo", nsmgr);
foreach (XPathNavigator nav in xni)
Console.WriteLine(nav.Name);
}
进一步阅读,如果您有兴趣:MSDN: XML Namespaces and How They Affect XPath and XSLT .
关于c# - XPathNavigator 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4179420/
这是我正在使用的 XML 示例(可从任何 wiki 的 Special:Export/SomePage 结果中检索): Wikipedia http://en.wikipedi
var xml= @" The Gorgias3
我有这样的 XML: 我正在尝试使用类似这样的方法在“c”标签上找到“val”属性的值: XmlDocument doc = new XmlDocument(); doc.
我有一个这样的 XML 文件: A 0.01 Pass A
给定以下 XML 标记: 和一个XPathNavigator位于 元素, string withNs = navigator.GetAttribute("name", navigator
我第一次使用 XPathNavigator 就从这里开始。 这是我的简单 xml: 现在,我正在使用 CommonLibrary.NET
我在使用 XPathNavigator 时遇到问题。我有一个文档,在流中包含一堆不带 namespace 的“主题”元素。 我正在使用(表达被简化到最低限度,首先我认为我的表达是错误的): XPath
我不想再问 XPath/XmlNamespaceManager 问题,但我似乎无法弄明白。 我使用了 XpathVisualizer 工具,它可以使用 XPath“//FuelGradeMovemen
我正在尝试查找某个节点的祖先。我们称它为“NodeA”。我得到了“NodeA”节点的列表,并想查找其祖先以检查某个属性值。这是我检索所有“NodeA”节点的代码: String xPathExpres
我怀疑我遗漏了一些基本但重要的东西,但正因为如此,我的 XPath 导航器总是返回根。 我有一些像这样的 XML 数据: about faqs feedback
这是我的代码,不知道为什么不能通过XPathNavigator读取数据。但在我添加命名空间和模式之前已经很久了。 XmlReaderSettings settings = ne
我正在寻找从 Microsoft 的 XPathNavigator 类派生的类的 C# 示例实现。任何人都可以指出这样一篇文章吗? 您可能知道(也可能不知道),XmlNavigator 旨在允许将 X
我有一个相当大的 XML 文件,我需要将其解析为 .NET 类结构(以映射到固定长度的记录格式并通过 MQ 传输)。性能很重要,但不是绝对关键。 我几乎总是使用 XPathNavigator 来读取
我有以下代码,其最后一行在每次执行时都会导致 NotSupportedException,而且我还没有找到绕过它的方法。这个假设的类似代码找到一本具有特定标题的“书”,目的是将其更新为新标题。它确实找
是否有一种简单的方法来检测 XPathNavigator XML 节点上是否存在 empty 属性(例如 与 )? Node.GetAttribute无论哪种方式都返回一个空字符串。我唯一能想到的就
这是使用 Microsoft 中的 XPathNavigator 的示例. using System; using System.Xml; using System.Xml.XPath; // htt
我尝试从 XmlNode(它是一个 XmlElement)获取行号,但它不能转换为 IXmlLineInfo。所以我尝试使用 XPathNavigator,但它也不起作用。 如何获取它的行号? 最佳答
我在 C# 中使用 XPathNavigator 计算值“89001012012341234”的模数不正确。 public object Evaluate(string expression) {
我看到了这个问题: XPathDocument vs. XmlDocument 但它没有我正在寻找的信息:我的问题: 我知道 XPathDocument 将完整 xml 加载到内存中: 我的问题来自
给定流作为输入,我如何针对 XML 数据源安全地创建 XPathNavigator? XML 数据源: 可能包含需要删除的无效十六进制字符。 可能包含与文档声明的编码不匹配的字符。 例如,云中的某些
我是一名优秀的程序员,十分优秀!