我有以下XML:
<Doc>
<Entries>
<Entry>
<RowA>Test</RowA>
<RowB>Hello</RowB>
<Row:C>Try to Access me </Row:C>
</Entry>
<Entry>
<RowA>Try Again</RowA>
<RowB>Hello2</RowB>
<Row:C>Try to Access me again </Row:C>
</Entry>
</Entries>
</Doc>
按照我的代码,除了Row:C之外,一切都正常运行
XmlNodeList xmlNodeList = xmlFile.SelectNodes("Doc/Entries/Entry");
foreach (XmlNode xmlNode in xmlNodeList)
{
String _Ok = xmlNode.SelectSingleNode("RowA").InnerText;
String _Error = xmlNode.SelectSingleNode("Row:C").InnerText; // ERROR
}
需要名称空间管理器或XsltContext。该查询具有前缀,变量或用户定义的函数。
提前感谢您的时间。
答案 0 :(得分:1)
您的xml包含名称空间,因此您需要使用XmlNamespaceManager
来解析XPath表达式中前缀的名称空间。
class Program
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"Path to your xml file");
XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("Row", "http://www.namespace.com/"); // <= Replace your namespace here that start with "xmlns:Row="http://www.namespace.com/"" in root of document
XmlNodeList nodes = doc.SelectNodes("//Doc//Entries//Entry//*", ns);
foreach (XmlNode node in nodes)
{
Console.WriteLine(node.InnerText);
}
Console.ReadLine();
}
}
输出: