Xml java как вставить комментарий
Перейти к содержимому

Xml java как вставить комментарий

  • автор:

XML-литерал комментариев (Visual Basic)

Литералы комментариев XML не содержат содержимого документа; они содержат сведения о документе. Раздел комментариев XML заканчивается последовательностью «—>». Это означает следующие моменты:

  • Нельзя использовать внедренное выражение в литерале комментариев XML, так как внедренные разделители выражений являются допустимым содержимым XML-комментариев.
  • Разделы комментариев XML не могут быть вложены, так как content не может содержать значение «—>».

Можно назначить литерал комментариев XML переменной или включить его в литерал XML-элемента.

Xml-литерал может охватывать несколько строк без использования символов продолжения строки. Эта функция позволяет скопировать содержимое из XML-документа и вставить его непосредственно в программу Visual Basic.

Компилятор Visual Basic преобразует литерал комментариев XML в вызов конструктора XComment .

Пример

В следующем примере создается xml-комментарий, содержащий текст «Это комментарий».

Dim com As XComment =

См. также

  • XComment
  • XML-литерал элемента
  • XML-литералы
  • Создание XML в Visual Basic

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Обратная связь

Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе https://aka.ms/ContentUserFeedback.

Отправить и просмотреть отзыв по

Дополнительные ресурсы

Значок отказа согласно Закону Калифорнии о защите конфиденциальности потребителей (CCPA)

  • Светлая
  • Темная
  • Высокая контрастность
  • Предыдущие версии
  • Блог
  • Участие в доработке
  • Конфиденциальность
  • Условия использования
  • Товарные знаки
  • © Microsoft 2024

Как вставить комментарий в XML документ?

Ниже код моей функции. Возможно, моя проблема заключается в том, что я неправильно понял как работает insertBefore. Работу этого метода я понял так, insertBefore имеет два параметра: первый параметр — узел, который хотим вставить, второй параметр — перед каким узлом хотим вставить. Вызываем сам метод insertBefore у того узла, для которого нововставленный узел будет дочерним. Если все так, тогда не могу понять, почему данный код не вставляет комментарий там, где нужно.

public static Document addCommentsToDocument(Object obj, String tagName, String comment) throws Exception < String fileName = new String("/home/albuquerque/XML.xml"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse(file); document.getDocumentElement().normalize(); Node root = document.getDocumentElement(); NodeList listNode = root.getChildNodes(); Comment com = document.createComment(comment); for (int i = 0; i < listNode.getLength(); i++) < Node node = listNode.item(i); root.insertBefore(com, node); >return document; > 

Ниже код XML. Перед каждым тегом, кроме родительского нужно вставить комментарий.

  a b string1 string2  

Но вставка происходит такая:

 1 1 string1 string2 

Что не так я делаю?
Отслеживать
Maksim Ohotnikov
задан 16 окт 2018 в 21:34
Maksim Ohotnikov Maksim Ohotnikov
258 3 3 серебряных знака 21 21 бронзовый знак

Как я понимаю, вы одну и ту же ноду-коммент вставляете. В итоге она оказывается в конце. Нужно в цикле создавать новые узлы-комментарии и их вставлять.

16 окт 2018 в 23:19

@Alexander, вчера еще исправил это, но не понял как. Все верно, вот как я исправил это n.getParentNode().insertBefore(document.createComment(comment), n); Я просто узел вставлял перед каждым елементом xml и следующей итерацией передвигал в итоге он в конце оказался у последнего, так?

Примеры использования XML в Java (JDOM)

На днях мне понадобилось хранить настройки моей Java программы в файле. Не долго думая, я выбрал формат данных XML. В Java существует несколько различных библиотек для взаимодействия с ним. Например, такие как DOM, SAX, JDOM. Посмотрев на структуру каждой библиотеки, я решил использовать JDOM. Мне уже приходилось работать с XML в C#, а JDOM очень похож интерфейсом поставляемым с .NET. Кого заинтересовало — прошу под кат.

Библиотеку JDOM вы можете скачать здесь. Распакуйте архив и добавьте ее в проект. Не забудьте подключить:

import org.jdom.*; import org.jdom.output.*; import org.jdom.input.*;

И так, поставим себе задачу построить следующий XML файл:

   Asus Eee PC 

Примечание: автор не является противником того или иного производителя ноутбуков. Все названия и параметры элементов XML выбраны в качестве примера и могут совсем не соответствовать действительности.

Каждый XML документ имеет единственный корневой элемент. Создадим новый такой элемент и сам документ:

Element rootElement = new Element("notebooks"); Document doc = new Document(rootElement);

Все интуитивно понятно. Конструктор элемента принимает в качестве аргумента строку, то есть его имя, а конструктор документа — элемент, то есть корневой элемент. Теперь добавим пару атрибутов к нашему элементу:

rootElement.setAttribute("color", "black"); rootElement.setAttribute(new Attribute("size", "13.3"));

У объекта элемента весьма очевидные методы для добавления атрибутов. Кроме того, добавить атрибут можно несколькими методами, это добавляет гибкости в процессе программирования. Теперь добавим в rootElement, другой элемент:

rootElement.addContent(new Element("acer"));

Это один из способов добавления элемента. Он может показаться неудобным, так как у нас нет прямой ссылки на объект дочернего элемента. Но это не так! Конструктор элемента, а также многие другие методы, возвращают ссылку на созданный объект, поэтому если нам необходимо, например, добавить атрибут, можно сделать следующее:

rootElement.addContent(new Element("acer").setAttribute("price", "cheap"));

Кроме того, можно сделать даже так:

rootElement.addContent(new Element("acer"). setAttribute("price", "cheap"). setAttribute("quality", "bad"));

Правда выглядит это не очень читабельно. Но есть и более наглядный метод создания дочерних элементов:

Element elAsus = new Element("asus"); elAsus.setAttribute("price", "normal"); elAsus.setAttribute("quality", "normal"); rootElement.addContent(elAsus); Element elSony = new Element("sony"); elSony.setAttribute("price", "expensive"); elSony.setAttribute("quality", "good"); rootElement.addContent(elSony);

Если нам необходимо получить доступ к какому либо элемент, а ссылка на него утеряна, можно сделать следующее:

Element elAcer = rootElement.getChild("acer"); elAcer.getAttribute("quality").setValue("normal");

Кроме элементов, а так же их атрибутов можно добавлять просто текст или комментарии:

elAsus.addContent("Asus Eee PC"); rootElement.addContent(new Comment("This is just comment!"));

Теперь когда у нас есть готовый XML документ, было бы не плохо сохранить его в файл. Для этого нужно воспользоватся классом XMLOutputter. Вот пример сохранения созданного документа:

try < XMLOutputter outputter = new XMLOutputter(); outputter.setFormat(Format.getPrettyFormat()); FileWriter fw = new FileWriter("output.xml"); outputter.output(doc, fw); fw.close(); >catch (Exception ex)

XMLOutputter может выводить данные в любой поток, в нашем примере это файл. Format определяет вид получаемого XML контента.

Теперь рассмотрим считывания данных из готового XML документа. Для нам понадобится SAXBuilder. Вот пример программы, которая считывает из файла output.xml название корневого элемента, а так же список его дочерних элементов:

package xmlissimple; import org.jdom.*; import org.jdom.output.*; import org.jdom.input.*; import java.io.*; import java.util.List; public class XmlIsSimple < public static void main(String[] args) < try < SAXBuilder parser = new SAXBuilder(); FileReader fr = new FileReader("output.xml"); Document rDoc = parser.build(fr); System.out.println(rDoc.getRootElement().getName()); Listtemp = rDoc.getRootElement().getChildren(); for (int i = 0; i < temp.size(); ++i) < System.out.println(temp.get(i).getName()); >> catch (Exception ex) < System.out.println(ex.getMessage()); >> >

В результате вызова метода build, объекта SAXBuilder мы получаем такой же документ, как и при создании XML файла. Это позволяет добавлять, удалять и редактировать все XML элементы в текущем документе.

Как видите, ничего сложного в JDOM нет. Задавайте свои ответы, отписываетесь в комментариях. Удачи.

Похожие записи:

  1. Пробуем программировать в Lazarus
  2. Указатели в C/C++ для новичков (Часть 2)
  3. Немного о программе make
  4. Очередь и стек в Delphi

XML, Сериализация в XML

— Отлично. Не жалуюсь. Сегодня Билаабо рассказал про JavaScript. Не все, конечно, но тоже немало. Я конечно еще на JS ничего не писал, но думаю, что это несложно.

А Элли рассказала про сериализацию в JSON. И ты рассказывал о Jackson framework и как настраивать «полиморфную десериализацию» с помощью аннотаций.

— Нифига себе, ты умный теперь, Амиго! Серьезный мужик!

— Ладно. Давай к работе. Сегодня новая и интересная тема – XML.

XML, Сериализация в XML - 1

XML – это стандарт представления данных, которые легко могут быть прочитаны человеком, и еще легче – программой. Пример xml-файла:

  
Moscow

Основа XML – это теги. Тег – это слово в треугольных скобках (знаки меньше и больше). Теги бывают открывающие и закрывающие. Одному открывающему всего соответствует один закрывающий тег. Открывающие теги могут иметь атрибуты.

В тег можно складывать другие теги, получая, таким образом, дерево элементов. Тег верхнего уровня называют корнем (root): у него есть дочерние теги, у них свои дочерние теги.

Java-университет

— Выглядит несложно. А какие теги бывают?

— Любые. Никаких зарезервированных тегов нет. XML – это язык, для описания любых данных. Люди сами придумывают теги для своих нужд и договариваются, как их использовать.

Фактически, XML – это способ записать данные в виде дерева элементов, понятный компьютеру.

— Вроде ясно. Кстати, у меня вопрос.

Вот JSON используется для передачи данных с браузера на сервер, а где используется XML?

— Да там же, где и JSON: для хранения и передачи данных.

Представь, что есть один общий XML-файл, который хранит данные программы, которую пишут двадцать человек. Тогда каждый из них придумывает теги для себя и очень скоро они начинают мешать друг другу.

Чтобы гарантировать уникальность тегов, им были придуманы префиксы. Выглядит это так:

Теги Описание
Тег cat с префиксом animal
< animal :cat>

< zoo :cat>
Два тега cat с разными префиксами.
Тег cat с префиксом animal , атрибут name с префиксом zoo .

Префиксы еще называют namespace – пространство имен . Тогда последнее предложение в таблице будет звучать так «Тег cat из пространства имен animal с атрибутом name из пространства имен zoo».

Кстати, помнишь в Java у класса есть короткое имя, а есть длинное уникальное имя, в которое входит название пакета, его еще указывают при импорте?

— Так вот, у префиксов тоже есть уникальное длинное имя и его тоже указывают при импорте:

data xmlns:soap > soap:item> soap:info/> soap:item> data>

« xml ns :soap» значит « XML — n ame s pace SOAP»

Более того, если есть теги без префикса, можно задать и их уникальное имя:

 xmlns:soap="http://cxf.apache.org/bindings/soap" xmlns:task="http://www.springframework.org/schema/task"> soap:item> soap:info/> task:info/> soap:item> 

«xmlns=…» задает namespace для пустого префикса – т.е. для тегов без префикса, таких как data.

В документе может быть сколько угодно namespace, но у каждого должно быть свое уникальное имя.

— Ясно. А почему такие странные «уникальные имена» у этих namespace?

— Обычно там указывают URL, по которому находится документ, который описывает этот namespace и/или его XML-теги.

— Не так уж и мало на меня сегодня вылили информации. Что еще?

— Еще немного осталось.

Во-первых, у XML есть заголовок – специальная строка, которая описывает версию этого XML и кодировку файла.

Выглядит она обычно так:

version="1.0" encoding="UTF-8"?>    

Еще в XML можно вставлять комментарии. Для начала комментария используют «».

— Из-за того, что в XML используются символы « < >“ &», их нельзя использовать в других местах. Для их описания используют так называемые «эскейп последовательности» — набор символов для представления других символов/символа. Вот список некоторых из них:

Escape-последовательность Символ, который она заменяет
& &
" «
<
> >
'

А вот пример кода, который хранится в XML:

if (ab) System.out.println("a is minimum");
 if (a < b) System.out.println("a is minimum"); 

— М-да. Выглядит не очень красиво.

— А ты помнишь, в Java тоже экранируются некоторые символы — например «\». И тоже для его написания в строке приходится писать его дважды. Так что это часто встречаемое явление.

— У меня на сегодня все.

— Ура. Наконец-то я отдохну.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *