Xamarin.Forms에서 SVG 파일을 사용하고 있습니다. 이 파일은 매우 단순하며이 모양이 대개 polyline
인 단일 모양을 포함합니다. 그러나 몇 가지 다른 포인트 기반 모양 중 하나가 될 수있는 경우가 있습니다. 이러한 파일을 구문 분석 할 때 shape 요소의 특정 특성 값을 가져 오려고합니다.런타임까지 필수 XElement 이름을 모르는 경우 XDocument에서 속성 값을 가져 오는 방법은 무엇입니까?
는 여기에 내가 구문 분석하는 기대의 예 :
<svg width="1200" height="800" version="1.1" bordercolor="#666666" borderopacity="1.0" xmlns="http://www.w3.org/2000/svg">
<polyline stroke="#004976" fill="transparent" stroke-width="5" points="479,91 ..." />
</svg>
그래서이 가장 일반적인 경우에 나는
polyline
의
points
속성의 값을 얻기 위해 노력하고 있어요. 나는 이것이 간단한 LINQ-to-XML 함수가 될 것이라고 확신하지만 나는 그것을 놓치고있다. 나는이 여러 버전을 시도
public static Point[] GetPointsFromSVG(XDocument svg)
{
XElement shape = svg.Descendants().First();
string pointsValue = shape.Attribute("points").Value;
var points = pointsValue.Split(' ').Select(x => x.Split(','))
.Select(y => new Point(int.Parse(y[0]), int.Parse(y[1])))
.ToArray();
return points;
}
하지만, 각각의 경우에 shape
는 XDocument
객체가 유효하고 올바른 형식의 경우에도 null
입니다 : 여기에 지금까지 시도거야. 또한 내가이 접근 방식과 결혼하지 않았 음을 주목하십시오, 나는 단지 작동하는 것을 필요로합니다!
정보 주셔서 감사합니다. 또한'int.Parse' 문제를 지적 해 주셔서 감사 드리며, 나는 그것을 간과했습니다. '...'는 포인트 목록을 자르는 나의 방법입니다. –
그래, 나는'...'에 대해 알아 냈다. 단지 유효한 non-int 값이 있다는 것을 깨닫는다. 그러나 문제는 없다. 이것이 도움이된다면, 올바른 대답으로 upvoting/marking을 고려하십시오. –