2015-05-06 78 views
0
<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg width="12cm" height="12cm" viewBox="0 0 1000 1000" 
    xmlns="http://www.w3.org/2000/svg" version="1.1"> 
    <line x1="100" y1="100" x2="500" y2="200" stroke="red" stroke-width="5" /> 
    <circle cx="200" cy="100" r="50" stroke="black" stroke-width="3" /> 
</svg> 

我想用java打印這些svg代碼。我知道我應該使用print方法來做到這一點,但每次我嘗試編譯java程序時,我都會遇到一堆錯誤。請幫幫我。以下是我的代碼:如何在java中打印svg?

class svg{ 
    puclic static void main(String[] args){ 
     System.out.print(" 
      <?xml version=\"1.0\" standalone=\"no\"?> 
      <!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" 
      \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"> 
      <svg width=\"12cm\" height=\"12cm\" viewBox=\"0 0 1000 1000\" 
      xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"> 
      <line x1=\"100\" y1=\"100\" x2=\"500\" y2=\"200\" stroke=\"red\" stroke-width=\"5\" /> 
      <circle cx=\"200\" cy=\"100\" r=\"50\" stroke=\"black\" stroke-width=\"3\" /> 
      </svg> 
      ") 
    } 
} 
+2

顯示你的代碼,顯示你得到的「一堆錯誤」。在此之前,沒有人可以幫助你。 – Dragondraikk

+0

我已經更新了。 – Turf

+1

你可以上傳*你在問題中陳述的一堆錯誤*,以便我們知道錯誤是? – Blip

回答

2

您不能在String這樣的情況下使用換行符。如果你想保持他們,他們必須與\n

同樣,你拼寫錯誤public

最重要的是,您最後忘記了;

這應該工作:

public static void main(String[] args){ 
    System.out.print(
     "<?xml version=\"1.0\" standalone=\"no\"?>\n" + 
     "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n" + 
     "\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n" + 
     "<svg width=\"12cm\" height=\"12cm\" viewBox=\"0 0 1000 1000\"\n" + 
     "xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n" + 
     "<line x1=\"100\" y1=\"100\" x2=\"500\" y2=\"200\" stroke=\"red\" stroke-width=\"5\" />\n" + 
     "<circle cx=\"200\" cy=\"100\" r=\"50\" stroke=\"black\" stroke-width=\"3\" />\n" + 
     "</svg>"); 
} 
+0

謝謝!但實際上這些代碼應該用紅線打印出一個黑圈的圖像。如何修改打印方法以便在控制檯中打印? – Turf

+0

控制檯無法顯示圖像,尤其是如果您擁有的只是描述它的某些XML,則不是。你將需要一些類似的GUI。我建議你看看Swing教程 – Dragondraikk

0

1更改puclicpublic

2添加一個分號到

3使用行終止符,如果你的System.out.println語句的結束你想換行

class svg { 
    public static void main(String[] args){ 
     System.out.print("<?xml version=\"1.0\" standalone=\"no\"?>\n" + 
      "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"    \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n" + 
      "<svg width=\"12cm\" height=\"12cm\" viewBox=\"0 0 1000 1000\"   xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n" + 
      "<line x1=\"100\" y1=\"100\" x2=\"500\" y2=\"200\" stroke=\"red\" stroke-width=\"5\" />\n" + 
      "<circle cx=\"200\" cy=\"100\" r=\"50\" stroke=\"black\" stroke-width=\"3\" /></svg>"); 
    } 
} 
1

你s應該看看如何向一個字符串添加換行符。這由+完成。另外不要忘記用"包圍字符串。

如果你想將任意測試格式化爲Java轉義字符串,那麼我建議你看看Free Online Java or .Net Escape Tool(你可以通過Google找到它們)等在線工具。

這一個將逃避你的XML,使它看起來如下。程序然後將編譯並將XML打印到控制檯上。

package so; 

public class StringFormatter { 

    public static void main(String[] args) { 
     System.out.println(

       "<?xml version=\"1.0\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \r\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<svg width=\"12cm\" height=\"12cm\" viewBox=\"0 0 1000 1000\"\r\n  xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\r\n  <line x1=\"100\" y1=\"100\" x2=\"500\" y2=\"200\" stroke=\"red\" stroke-width=\"5\" />\r\n  <circle cx=\"200\" cy=\"100\" r=\"50\" stroke=\"black\" stroke-width=\"3\" /> \r\n</svg>" 

       ); 
    } 
} 
+0

非常感謝!但這次我得到了「找不到或加載主類」。爲什麼會發生?我已將文件名更改爲StringFormatter。 – Turf

+0

可能是因爲我的類StringFormatter的名稱。也許你使用了不同的類名?你怎麼稱呼Java程序? – Stephan

0

如果要在多行中編寫字符串代碼,則需要使用「+」連接符號。否則,您可以在一行中編寫完整的代碼。

class svg{ 
public static void main(String[] args){ 
    System.out.print("" + 
      "   <?xml version=\"1.0\" standalone=\"no\"?>" + 
      "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" " + 
       "\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">" + 
       "<svg width=\"12cm\" height=\"12cm\" viewBox=\"0 0 1000 1000\"" + 
       "xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">" + 
       "<line x1=\"100\" y1=\"100\" x2=\"500\" y2=\"200\" stroke=\"red\" stroke-width=\"5\" />" + 
       "<circle cx=\"200\" cy=\"100\" r=\"50\" stroke=\"black\" stroke-width=\"3\" /> " + 
       "</svg>"); 
} 
} 

上面的代碼將在一行中打印整個字符串。如果你想添加到不同的行中,你可以爲每行使用不同的打印語句或者在字符串中添加\ n。