2015-05-06 3 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> 

Я хочу напечатать эти коды svg в java. Я знаю, что для этого нужно использовать метод печати, но каждый раз, когда я пытался скомпилировать java-программу, я получал кучу ошибок. Пожалуйста, помогите мне. Вот мои коды:Как напечатать svg в java?

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, описывающий ее. Для этого вам понадобится какой-то графический интерфейс. Я бы предложил вам посмотреть учебник Swing – Dragondraikk

0

1 Изменение puclic в public

2 Добавить точку с запятой в конце вашего System.out.println заявление

3 Использование линии терминатора, если вы хотите разрывы строк

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

Вы с чтобы посмотреть, как добавить разрывы строк в строку. Это делается +. Также не забывайте окружать строки ".

Если вы хотите отформатировать произвольный тест для строк, экранированных 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 в строку.

Смежные вопросы