public static XPathContainer GetXPath(string XmlSelector) { var xpathcontainer = new XPathContainer(); xpathcontainer.IsComplex = XmlSelector.IndexOf("<") > -1; xpathcontainer.TagName = Utilities.Strings.TextBetween(XmlSelector, "<", ">"); var xpath = xpathcontainer.IsComplex ? xpathcontainer.TagName : XmlSelector; var ix = xpath.IndexOf(":", StringComparison.Ordinal); if (ix > -1) { var ns = xpath; ns = ns.Remove(ix); if (ns.StartsWith("//", StringComparison.Ordinal)) { ns = ns.Substring(2); } var name = xpath.Substring(ix + 1); xpathcontainer.Namespaces.Add(ns); if (ns == "*") { //XPath = "//*[local-name() = translate('" + name + "','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"; //XPath = "*[translate(local-name(),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')='" + name.ToUpper() + "']"; //XPath = "*[matches(local-name(),'" + name + "',i)]"; xpath = "*[local-name()='" + name + "']"; } } xpathcontainer.XPath = xpath; return(xpathcontainer); }
public static XmlNode SelectSingleNode(XmlNode node, XPathContainer XPathContainer) { XmlNamespaceManager manager = Utilities.Xml.GetTaxonomyNamespaceManager(node.OwnerDocument); if (!XPathContainer.HasNamespace(manager)) { return(null); } return(node.OwnerDocument.SelectSingleNode(XPathContainer.XPath, manager)); }
public static List <XmlNode> SelectChildNodes(XmlNode node, XPathContainer XPathContainer) { var result = new List <XmlNode>(); XmlNamespaceManager manager = Utilities.Xml.GetTaxonomyNamespaceManager(node.OwnerDocument); //var ix = XPath.IndexOf(":", StringComparison.Ordinal); //if (ix>-1) //{ // var ns = XPath; // if (XPath.StartsWith("//", StringComparison.Ordinal)) // { // ns = XPath.Substring(2); // } // ns = ns.Remove(ix); // var name = XPath.Substring(ix + 1); // if (ns == "*") // { // //XPath = "//*[local-name() = translate('" + name + "','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"; // //XPath = "*[translate(local-name(),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')='" + name.ToUpper() + "']"; // //XPath = "*[matches(local-name(),'" + name + "',i)]"; // XPath = "*[local-name()='" + name + "']"; // } // if (!manager.HasNamespace(ns) && ns!="*") // { // return result; // //return node.OwnerDocument.SelectNodes("xffgh"); // } //} //if (XPath.Contains("*")) //{ //} if (!XPathContainer.HasNamespace(manager)) { return(result); } var nodes = node.SelectNodes(XPathContainer.XPath, manager); //.SelectNodes(XPath, manager); foreach (XmlNode xnode in nodes) { if (xnode.ParentNode == node) { result.Add(xnode); } } return(result); }
public static List <XmlNode> SelectNodes(XmlNode node, XPathContainer xpathcontainer) { var result = new List <XmlNode>(); XmlNamespaceManager manager = Utilities.Xml.GetTaxonomyNamespaceManager(node.OwnerDocument); foreach (var ns in xpathcontainer.Namespaces) { if (!manager.HasNamespace(ns)) { return(result); } } //if (XPath.Contains(":")) //{ // var ns = XPath; // if (XPath.StartsWith("//")) // { // ns = XPath.Substring(2); // } // ns = ns.Remove(ns.IndexOf(":")); // if (!manager.HasNamespace(ns) ) // { // return result; // //return node.OwnerDocument.SelectNodes("xffgh"); // } //} //try //{ var nodes = node.SelectNodes(xpathcontainer.XPath, manager); foreach (XmlNode xnode in nodes) { result.Add(xnode); } //} //catch (Exception ex) //{ //} return(result); }
public static XmlNode SelectChildNode(XmlNode node, XPathContainer XPath) { return(SelectChildNodes(node, XPath).FirstOrDefault()); }