2012-05-07 5 views
2

言ってやるが、私はどこかで、あなたがこの多角形を見つけて、ポイント[]配列にそのポイントを解析するための最良の方法だろうどう思いますJava/AndroidでSVGを解析するには?

<polygon id="collide" fill="none" points="45,14 0,79 3,87 18,92 87,90 98,84 96,66 59,14"/> 

が含まれている資産の.svgファイルを持っていますか?

ありがとうございます!

+1

私は正規表現の最良の方法だと思います... –

+3

ノードを取得して '@ points'属性' // polygon [@ id = 'collide']/@ points'を得るためのXMLパーサーまたはXPath値をスペースで区切り、それを反復して 'Points'を作成します。 – Alex

+1

チェック質問 'Android' http://stackoverflow.com/questions/10089291/how-to-parse-xml-in-android – jcubic

答えて

5

などはXMLとXPathを使用して、それは(例外はチェックなし)を容易に行うことができ、上記のコメントで述べた:

public static Point[] getPoints(String xml) throws Exception { 
    DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
    Document doc = db.parse(new InputSource(new StringReader(xml))); 
    XPath xpath = XPathFactory.newInstance().newXPath(); 
    XPathExpression expr = xpath.compile("//polygon[@id='collide']/@points"); 
    String[] pointsAttr = ((String) expr.evaluate(doc, XPathConstants.STRING)).split("\\p{Space}"); 
    Point[] points = new Point[pointsAttr.length]; 
    for (int i = 0; i < pointsAttr.length; ++i) { 
     String[] coordinates = pointsAttr[i].split(","); 
     points[i] = new Point(Integer.valueOf(coordinates[0]), Integer.valueOf(coordinates[1])); 
    } 
    return points; 
} 

を私はあなたがAndroid上であなたの処分で持っているかわかりません。

+0

ありがとう! "java.net.MalformedURLException:プロトコルが見つかりませんでした:<?xml version =" 1.0 "encoding .........."エラーです。私はあなたの "file.xml"に何を入れるべきですか?そこに文字列としてxmlを入れました。 –

+0

上記のコードを編集したところ、前のコードがファイルからXMLを読み込んだので、これをStringから読み込んだので、XMLの内容を 'xml'変数に入れて関数。 – Alex

関連する問題