Beispiel #1
0
        public List <XmlNode> FindNodes(string name, FNodeFinderCondition condition = null)
        {
            unsafe
            {
                List <XmlNode> nodeList = new List <XmlNode>();

                if (mCoreObject.Pointer == IntPtr.Zero)
                {
                    return(nodeList);
                }

                XmlNode.NativePointer node = XmlSDK.RapidXmlNodeA_first_node(mCoreObject, name);

                while (mCoreObject.Pointer != IntPtr.Zero && node.Pointer != IntPtr.Zero)
                {
                    int pNeedFreeStr = 0;
                    var strPtr       = XmlSDK.RapidXmlNodeA_name(node, ref pNeedFreeStr);
                    var nodeName     = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(strPtr);
                    if (pNeedFreeStr == 1)
                    {
                        XmlSDK.RapidXmlNodeA_FreeString(strPtr);
                    }
                    if (name == nodeName)
                    {
                        XmlNode nd = new XmlNode(node);
                        nd.mHolder = mHolder;

                        bool bCancel = false;
                        if (condition != null)
                        {
                            if (condition(nd, ref bCancel))
                            {
                                nodeList.Add(nd);
                            }
                        }
                        else
                        {
                            nodeList.Add(nd);
                        }
                        if (bCancel)
                        {
                            break;
                        }
                    }
                    node = XmlSDK.RapidXmlNodeA_next_sibling(node);
                }

                return(nodeList);
            }
        }
Beispiel #2
0
 public extern static IntPtr RapidXmlNodeA_GetStringFromNode(XmlNode.NativePointer node);
Beispiel #3
0
 public extern static IntPtr RapidXmlNodeA_value(XmlNode.NativePointer node, ref int pNeedFreeStr);
Beispiel #4
0
 public extern static XmlNode.NativePointer RapidXmlNodeA_next_sibling(XmlNode.NativePointer node);
Beispiel #5
0
 public extern static XmlAttrib.NativePointer RapidXmlNodeA_first_attribute(XmlNode.NativePointer node, string name);
Beispiel #6
0
 public extern static XmlNode.NativePointer RapidXmlNodeA_first_node(XmlNode.NativePointer node, string name);
Beispiel #7
0
 public extern static void RapidXmlNodeA_remove_attribute(XmlNode.NativePointer xmlNode, XmlAttrib.NativePointer childXmlAttr);
Beispiel #8
0
 public extern static void RapidXmlNodeA_remove_node(XmlNode.NativePointer xmlNode, XmlNode.NativePointer childXmlNode);
Beispiel #9
0
 public extern static void RapidXmlNodeA_append_attribute(XmlNode.NativePointer node, XmlAttrib.NativePointer childAttr);
Beispiel #10
0
 public extern static void RapidXmlNodeA_append_node(XmlNode.NativePointer node, XmlNode.NativePointer childNode);
Beispiel #11
0
 public extern static IntPtr RapidXmlA_append_node(XmlHolder.NativePointer xmlHolder, XmlNode.NativePointer node);
Beispiel #12
0
 public XmlNode(XmlNode.NativePointer node)
 {
     mCoreObject = node;
 }