GetElementById() public method

public GetElementById ( string elementId ) : XmlElement
elementId string
return System.Xml.XmlElement
コード例 #1
0
        public XmlNode GetNodeByUri(string absoluteUrl)
        {
            absoluteUrl = absoluteUrl.Trim();
            if (absoluteUrl.StartsWith("#") || absoluteUrl.StartsWith("\"#"))
            {
                absoluteUrl = absoluteUrl.Replace("#", "").Replace("\"", "");
                return(GetElementById(absoluteUrl));
                //return GetElementById(absoluteUrl.Substring(1));
            }
            else
            {
                Uri docUri      = ResolveUri("");
                Uri absoluteUri = new Uri(absoluteUrl);

                string fragment = absoluteUri.Fragment;

                if (fragment.Length == 0)
                {
                    // no fragment => return entire document
                    if (docUri.AbsolutePath == absoluteUri.AbsolutePath)
                    {
                        return(this);
                    }
                    else
                    {
                        SvgDocument doc = new SvgDocument((SvgWindow)Window);

                        XmlReaderSettings settings = this.GetXmlReaderSettings();

                        settings.CloseInput = true;

                        //PrepareXmlResolver(settings);

                        using (XmlReader reader = XmlReader.Create(
                                   GetResource(absoluteUri).GetResponseStream(), settings,
                                   absoluteUri.AbsolutePath))
                        {
                            doc.Load(reader);
                        }

                        return(doc);
                    }
                }
                else
                {
                    // got a fragment => return XmlElement
                    string      noFragment = absoluteUri.AbsoluteUri.Replace(fragment, "");
                    SvgDocument doc        = (SvgDocument)GetNodeByUri(new Uri(noFragment));
                    return(doc.GetElementById(fragment.Substring(1)));
                }
            }
        }
コード例 #2
0
    public void TestDataImage()
    {
        string testData = "<?xml version='1.0'?>\n<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><image id='theImage' width='50' height='50' xlink:href='data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAwAAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFzByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSpa/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJlZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uisF81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PHhhx4dbgYKAAA7'/></svg>";
                SvgWindow wnd = new SvgWindow(50, 50, null);
                SvgDocument doc = new SvgDocument(wnd);
                doc.LoadXml(testData);

                SvgImageElement imgElm = doc.GetElementById("theImage") as SvgImageElement;
                Assert.IsNotNull(imgElm);
                Assert.IsTrue(!imgElm.IsSvgImage, "IsSvgImage");

                Bitmap bmp = imgElm.Bitmap;

                Assert.AreEqual(48, bmp.Width);
                Assert.AreEqual(48, bmp.Height);
    }
コード例 #3
0
ファイル: SvgDocument.cs プロジェクト: nagyist/savagesvg
        public XmlNode GetNodeByUri(string absoluteUrl)
        {
            absoluteUrl = absoluteUrl.Trim();
            if (absoluteUrl.StartsWith("#"))
            {
                return(GetElementById(absoluteUrl.Substring(1)));
            }
            else
            {
                Uri docUri      = ResolveUri("");
                Uri absoluteUri = new Uri(absoluteUrl);

                string fragment = absoluteUri.Fragment;

                if (fragment.Length == 0)
                {
                    // no fragment => return entire document
                    if (docUri.AbsolutePath == absoluteUri.AbsolutePath)
                    {
                        return(this);
                    }
                    else
                    {
                        SvgDocument doc = new SvgDocument((SvgWindow)Window);

                        XmlTextReader       xtr = new XmlTextReader(absoluteUri.AbsolutePath, GetResource(absoluteUri).GetResponseStream());
                        XmlValidatingReader vr  = new XmlValidatingReader(xtr);
                        vr.ValidationType = ValidationType.None;
                        doc.Load(vr);
                        return(doc);
                    }
                }
                else
                {
                    // got a fragment => return XmlElement
                    string      noFragment = absoluteUri.AbsoluteUri.Replace(fragment, "");
                    SvgDocument doc        = (SvgDocument)GetNodeByUri(new Uri(noFragment, true));
                    return(doc.GetElementById(fragment.Substring(1)));
                }
            }
        }
コード例 #4
0
        public XmlNode GetNodeByUri(string absoluteUrl)
        {
            if (string.IsNullOrWhiteSpace(absoluteUrl))
            {
                return(null);
            }

            absoluteUrl = absoluteUrl.Trim().Trim(new char[] { '\"', '\'' });
            if (absoluteUrl.StartsWith("#", StringComparison.OrdinalIgnoreCase))
            {
                return(GetElementById(absoluteUrl.Substring(1)));
            }

            Uri docUri      = ResolveUri("");
            Uri absoluteUri = new Uri(absoluteUrl);

            if (absoluteUri.IsFile)
            {
                string localFile = absoluteUri.LocalPath;
                if (File.Exists(localFile) == false)
                {
                    Trace.TraceError("GetNodeByUri: Locally referenced file not found: " + localFile);
                    return(null);
                }
                string fileExt = Path.GetExtension(localFile);
                if (!string.Equals(fileExt, ".svg", StringComparison.OrdinalIgnoreCase) &&
                    !string.Equals(fileExt, ".svgz", StringComparison.OrdinalIgnoreCase))
                {
                    Trace.TraceError("GetNodeByUri: Locally referenced file not valid: " + localFile);
                    return(null);
                }
            }

            if (string.Equals(absoluteUri.Scheme, "data", StringComparison.OrdinalIgnoreCase))
            {
                Trace.TraceError("GetNodeByUri: The Uri Scheme is 'data' is not a valid XmlDode " + absoluteUri);
                return(null);
            }

            string fragment = absoluteUri.Fragment;

            if (fragment.Length == 0)
            {
                // no fragment => return entire document
                if (docUri != null && string.Equals(docUri.AbsolutePath,
                                                    absoluteUri.AbsolutePath, StringComparison.OrdinalIgnoreCase))
                {
                    return(this);
                }

                SvgDocument doc = new SvgDocument((SvgWindow)Window);

                XmlReaderSettings settings = this.GetXmlReaderSettings();

                settings.CloseInput = true;

                //PrepareXmlResolver(settings);

                using (XmlReader reader = XmlReader.Create(GetResource(absoluteUri).GetResponseStream(),
                                                           settings, absoluteUri.AbsolutePath))
                {
                    doc.Load(reader);
                }

                return(doc);
            }
            else
            {
                // got a fragment => return XmlElement
                string      noFragment = absoluteUri.AbsoluteUri.Replace(fragment, "");
                SvgDocument doc        = (SvgDocument)GetNodeByUri(new Uri(noFragment));
                return(doc.GetElementById(fragment.Substring(1)));
            }
        }