使用.NET XLinq解析svg - 'xlink'是未声明的前缀

6

我正在尝试使用以下代码将SVG字符串解析为XElement:

XElement productSvg = XElement.Parse(svgString);

但我遇到了以下异常:XmlException - 'xlink'是未声明的前缀 这是我的svg:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg id="svg62433" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 595.19 596.32" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
        <g id="g7123">
            <path id="path5588" d="m404.54,164.29c0,121.64-98.612,220.26-220.26,220.26-121.64,0-220.26-98.612-220.26-220.26,0-121.64,98.612-220.26,220.26-220.26,121.64,0,220.26,98.612,220.26,220.26z" transform="matrix(0.01922722,0.99981514,-0.99981514,0.01922722,536.42634,464.95177)" fill="none"/>
            <text id="text5590" style="writing-mode:lr-tb;letter-spacing:0px;text-anchor:middle;word-spacing:0px;text-align:center;" font-weight="bold" font-size="64px" line-height="125%" font-stretch="normal" font-variant="normal" font-style="normal" font-family="'Swis721 Cn BT'">
                <textPath id="textPath5598" xlink:href="#path5588" startOffset="50%">
                    <tspan id="contentTopText" style="writing-mode:lr-tb;text-anchor:middle;text-align:center;" font-weight="bold" font-size="64px" line-height="125%" font-stretch="normal" font-variant="normal" font-style="normal" font-family="'Swis721 Cn BT'">Text Here</tspan>
                </textPath>
            </text>
        </g>
</svg>

有人知道如何在.NET XLinq中成功解析包含命名空间的xml属性吗?

2
无论是LINQ to XML还是任何其他XML API,如果您想使用它,您需要以命名空间格式良好的XML开始,这意味着xlink前缀需要被声明为例如xmlns:xlink="http://www.w3.org/1999/xlink",就像使用任何其他命名空间前缀一样。如果您没有这个,那么您需要一个HTML5解析器,而.NET目前(4.0)没有。 - Martin Honnen
1
@MartinHonnen,xlink命名空间在父级svg标签中声明。 - KodeKreachor
@svick,很棒,对于那些遇到这个问题的人,我在这里找到了一个很好的答案:http://aspnetgotyou.blogspot.com/2010/06/xdocument-or-xelement-with-xmlnamespace.html - KodeKreachor
如果前缀已声明,我不明白你如何会收到未声明前缀的错误消息。因此,这听起来像是你发布的XML与你收到错误的XML不同。 - Martin Honnen
1
不,我肯定遇到了异常,否则就不会费心发帖问问题了。我在下面找到的链接是一个很好的解决方案。请注意,我这里并不是解析实际的SVG XML文档,而是一个SVG字符串。 - KodeKreachor
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接