XML使用XPath表达式获取td单元格的值

时间:2015-08-19 12:27:22

标签: c# xpath xml-parsing

我尝试使用XPath表达式从表行中获取没有名称/ id的表单元格中的td单元格值但是无法解析它。读者可以告诉我哪里错了吗?

        XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load("C:\\trial.html");

    XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
    nsmgr.AddNamespace("ns", "http://www.w3.org/1999/xhtml");

    XmlNode root = xmlDoc.DocumentElement;
    System.Xml.XmlNodeList rowNodes = root.SelectNodes(@"ns:body/ns:div[@id='Index']/ns:div[@class='container']/ns:div[@class='maintext']/ns:table[@class='a_table']/ns:tr[@class='a_table_row']", nsmgr);

    foreach (XmlNode xmlNode in rowNodes)
    {
        // Is there a way to get nodes with td values(non-empty)? My attempts
        // seem to be wrong
        //System.Xml.XmlNodeList tds = xmlNode.SelectNodes("//td[text()]", nsmgr);
        //System.Xml.XmlNodeList tds = xmlNode.SelectNodes("//td[contains(text(), .)]", nsmgr);
        if (xmlNode.ChildNodes.Count == 3)
            nodes.Add(xmlNode);

    }

1 个答案:

答案 0 :(得分:0)

使用您的代码我认为您想使用

XmlNodeList tds = xmlNode.SelectNodes("ns:td[normalize-space()]", nsmgr);

查找选定为td的{​​{1}}的任何非空tr子元素。