无法将类型为”Aspose.Svg.Dom.Element“的对象强制转换为”Aspose.Svg.SVGCircleElement“类型

     // Set SVG Namespace Url
        string SvgNamespace = "https://www.w3.org/2000/svg";

        string documentPath = Path.Combine(ConstValue.SvgPDAResourceRootDir, "demo2.svg");

        using (var document = new SVGDocument(documentPath))
        {
            // Get root svg element of the document
            var svgElement = document.RootElement;

            // Create a circle element and set attributes values
            var circleElement = (SVGCircleElement)document.CreateElementNS(SvgNamespace, "circle");
            circleElement.Cx.BaseVal.Value = 100F;
            circleElement.Cy.BaseVal.Value = 100F;
            circleElement.R.BaseVal.Value = 50F;
            circleElement.SetAttribute("fill", "Salmon");

            // Add the circle element as the first child to svg element
            svgElement.InsertBefore(circleElement, svgElement.FirstChild);

            // Work with the document here...
            // Add a polyline and change stroke attributes for all circle and ellipse elements (see later)

            document.Save(Path.Combine(ConstValue.SvgPDAResourceRootDir, "demo2.svg"));
        }

上面的代码在执行过程中出现以下错误:
无法将类型为”Aspose.Svg.Dom.Element“的对象强制转换为”Aspose.Svg.SVGCircleElement“类型.

@jingzhou

您能否也与我们分享 .zip 格式的示例 SVG?我们将在我们的环境中测试该场景并相应地解决它。

SvgTest.7z (2.3 MB)

附件是我测试的示例,可以重现错误。

@jingzhou

我们已在我们的内部问题跟踪系统中打开了以下新工单,并将根据 Free Support Policies 中提到的条款提供他们的修复。

问题 ID:SVGNET-224

如果您需要优先支持以及直接联系我们的付费支持管理团队,您可以获得 Paid Support Services

@jingzhou

不要对名称空间字符串进行硬编码,而是考虑使用“NamespaceURI”属性直接从 SVG 文档的根元素中获取它。下面的代码片段说明了这一点:

// Get the namespace directly from the document's root element
string SvgNamespace = document.RootElement.NamespaceURI;

// Then use SvgNamespace when creating new elements
var circleElement = (SVGCircleElement)document.CreateElementNS(SvgNamespace, "circle");

这可确保使用的 SVG 命名空间与 SVG 文档中定义的命名空间保持一致,从而避免任何差异和潜在问题。