У меня есть файл 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>();
Что я делаю не так?