gpt4 book ai didi

c# - SelectSingleNode 返回 null - 即使有命名空间

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

我知道以前有人以类似的方式问过这个问题,但我似乎无法解决这个问题。

我有一些 xml:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<Research xmlns="http://www.rixml.org/2005/3/RIXML" xmlns:xalan="http://xml.apache.org/xalan" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" createDateTime="2011-03-29T15:41:48Z" language="eng" researchID="MusiJvs3008">
<Product productID="MusiJvs3008">
<StatusInfo currentStatusIndicator="Yes" statusDateTime="2011-03-29T15:41:48Z" statusType="Published" />
<Source>
<Organization type="SellSideFirm" primaryIndicator="Yes">
<OrganizationID idType="Reuters">9999</OrganizationID>

我正在尝试使用 xpath 读取值:

XPathDocument xmldoc = new XPathDocument(xmlFile); 
XPathNavigator nav = xmldoc.CreateNavigator();
XmlNamespaceManager nsMgr = new XmlNamespaceManager(nav.NameTable);
nsMgr.AddNamespace(string.Empty, "http://www.rixml.org/2005/3/RIXML");
XPathNavigator result = nav.SelectSingleNode("/Research", nsMgr); // <-- Returns null!

但即使是根节点的简单选择也会返回 null!我确定我的命名空间有问题。有人可以帮忙吗?

理想情况下,我想要简单的行,让我从 xml 文件中选择值,即

String a = xmlDoc.SelectSingleNode(@"/Research/Product/Content/Title").Value;

顺便说一句,我无法(直接)控制 XML 文件的内容。

最佳答案

我不相信您可以使用一个空的命名空间别名并让 XPath 表达式自动使用它。只要您使用实际的别名,它就应该可以工作。这个测试没问题,例如:

using System;
using System.Xml;
using System.Xml.XPath;

class Test
{
static void Main()
{
string xmlFile = "test.xml";
XPathDocument xmldoc = new XPathDocument(xmlFile);
XPathNavigator nav = xmldoc.CreateNavigator();
XmlNamespaceManager nsMgr = new XmlNamespaceManager(nav.NameTable);
nsMgr.AddNamespace("x", "http://www.rixml.org/2005/3/RIXML");
XPathNavigator result = nav.SelectSingleNode("/x:Research", nsMgr);
Console.WriteLine(result);
}
}

顺便问一下,您使用 XPath 和 XPathDocument 吗?我倾向于发现 LINQ to XML 是一个好得多的 API,尤其是在涉及 namespace 时。如果您使用的是 .NET 3.5,并且对使用 XPath 没有特殊要求,我建议您检查一下。

关于c# - SelectSingleNode 返回 null - 即使有命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5488984/

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