我有一个SVG文件,我已经添加了信息,我正在尝试使用LINQ to XML从中提取信息。这是我第一次使用LINQ。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg:svg xmlns:svg="http://www.w3.org/2000/svg">
*unimportant data*
<svg:g>
<svg:path d="m -1117.1429,-101.92353...">
<body type="static" />
</svg:path>
<svg:path d="M 862.85714,112.36218...">
<body type="kinematic" mass="1.0f" />
</svg:path>
<svg:path d="m -1040,-161.92353..." special="startpoint" />
</svg:g>
<svg:g>
<svg:path d="m -714.2857,-90.494957...">
*more paths*
</svg:g>
</svg:svg>
我要做的是提取所有不包含特殊属性的路径,将路径数据作为字符串获取,并获取body标签上的每个属性(路径可能有也可能没有)和把它们放在Dictionary<string, string>
。
这是我到目前为止的代码,它没有返回任何错误,但它没有提取任何路径。
XDocument document = XDocument.Load(filename);
XNamespace svg = "svg";
List<SVGPath> svgPaths =
(from svgPath in document.Descendants(svg + "g").Descendants(svg + "path")
where svgPath.Attribute("special") == null
select new SVGPath
{
Data = svgPath.Attribute("d").Value,
Properties = svgPath.Element("body").Attributes().ToDictionary(a => a.Name.LocalName, a => a.Value)
}).ToList<SVGPath>();
我做错了什么?
答案 0 :(得分:2)
该文档从未声明“svg”命名空间。那不行。