System.Xml.Linq的替代方案,以匹配Xpath

时间:2013-01-02 12:54:53

标签: c# xml xpath .net-framework-version

我使用System.Xml.Linq;来匹配xml文档中的Xpath。 XElementSaveOptions都来自System.Xml.Linq;

           XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
            nsmgr.AddNamespace("ns", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-02-03T16:54:46");

            XElement docRfsid = XElement.Parse(content);
            //if (docRfsid.XPathSelectElement("//ns:RFSID", nsmgr).Value != null)
            if (Regex.Match(docRfsid.ToString(), "RFSID", RegexOptions.IgnoreCase).Success)
            {
                projData.RfsId = docRfsid.XPathSelectElement("//ns:RFSID", nsmgr).Value.ToString();
            }

            XElement doc_Financial = XElement.Parse(content);
            string resultFinancial = doc_Financial.XPathSelectElement("//ns:Financial", nsmgr).ToString(SaveOptions.DisableFormatting);

我只想删除System.Xml.Linq; dll,因为我只能使用.net framework 2.0。 我还可以使用其他替代方法System.Xml.Linq;

2 个答案:

答案 0 :(得分:1)

是。使用System.Xml.XmlDocument,特别是SelectNodes()方法,DocumentElement属性或任何XmlElement实例。此方法接受XPath并返回匹配的XmlElements列表(无论它们是节点(XmlNode)还是属性(XmlAttribute))。这是基于旧的COM XmlDocument对象,并且可以在框架的1.1版本之前使用。

答案 1 :(得分:1)

的System.Xml

这样的东西
XmlDocument doc = new XmlDocument();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ns", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-02-03T16:54:46");
XmlNode financialNode = doc.DocumentElement.SelectNode("ns:Financial",nsmgr);
strring resultFinancial = null;
if (financialNode != null)
{
  resultFinancial = financialNode.InnerText;
}

排序。