2017-06-02 13 views
0
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using System.Xml; 

public class XmlReader : MonoBehaviour 
{ 
    XmlDocument doc = new XmlDocument(); 

    // Use this for initialization 
    void Start() 
    { 
     doc.Load(@"C:\Users\myxml\Documents\mysvg.svg"); 
     XmlNode node = doc.DocumentElement.SelectSingleNode("/g"); 

     foreach (XmlNode nodes in doc.DocumentElement.ChildNodes) 
     { 
      string text = nodes.InnerText; //or loop through its children as well 
     } 
    } 

    // Update is called once per frame 
    void Update() 
    { 

    } 
} 

私は、たとえば配列にそれぞれの子を解析するためにその後<g>どのようにsvgのXMLファイルタイプを解析できますか?

下のすべての子を取得したい:

<g 
    inkscape:label="Layer 1" 
    inkscape:groupmode="layer" 
    id="layer1"> 
    <rect 
     style="opacity:1;fill:#00c8fc;fill-opacity:0.98823529;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" 
     id="rect4155" 
     width="45.714287" 
     height="30" 
     x="37.387959" 
     y="115.30345" /> 
    <rect 
     style="opacity:1;fill:#00c8fc;fill-opacity:0.98823529;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" 
     id="rect4155-5" 
     width="45.714287" 
     height="30" 
     x="91.899246" 
     y="115.40621" /> 

だから私は、配列がRects たぶんstring[] Rects;

それを呼び出す作成したいです

次に、配列内の各Rectの下にパラメータを文字列としても持たせます:

Rect1 
fill:#00c8fc 
width="45.714287" 
height="30" 
x="37.387959" 
y="115.30345" 

この形式。

それでは、私はRECT1など彼のパラメータに別のスクリプトからのアクセス取得することができます。この場合 Rect1.width ...またはRect1.xを.... Rect1.fill ....

+0

xmlではないsvg htmlではありませんか? – jdweng

+0

答えは、他のXMLファイルと同じ構文解析を行います。ここには数十もの同様の質問があります。 – miken32

+0

[C#でXMLファイルを読み込んで解析するにはどうすればいいですか?](https://stackoverflow.com/questions/642293/how-do-i-read-and-parse-an-xml-file-in -c) – miken32

答えて

0

はむしろLINK to XMLを使用する方法柔軟

です
XDocument xdoc = XDocument.Load(@"C:\Users\myxml\Documents\mysvg.svg"); 
var rectElements = xdoc.Descendants("rect"); 

foreach(var rect in rectElements){ 
    var attributes = rect.Attributes(); 
    //Store them in some sort of Data Structure to support your requirements, maybe a Dictionary 
} 
関連する問題