Java針對XML檔案的操作大集合

XML是工作上常用到的資料交換格式,會需要利用JAVA進行XML資料的新增、修改或刪除,這裡把相關的方法記錄下來。

下述範例會存取在C:\Projects\Javas\中的sample.xml檔,而檔案中已經有以下的內容:

<?xml version="1.0" encoding="utf-8"?>

<root> 
  <item> 
    <productID>10001</productID>  
    <productName>產品名稱1</productName>  
    <productPrice>10</productPrice> 
  </item>
  <item> 
    <productID>10002</productID>  
    <productName>產品名稱2</productName>  
    <productPrice>20</productPrice> 
  </item>  
  <item> 
    <productID>10003</productID>  
    <productName>產品名稱3</productName>  
    <productPrice>30</productPrice> 
  </item>
</root>

利用Java存取XML我選用的Library是dom4j,可參考官網的介紹,以下是JAVA存取的程式範例:

package CDIT.stanley;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;

import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class dom4jXMLFullSample {
	
	//新增XML Node內容
	public static String XMLAppendNode(String xmlFilePath, String productID, String productName, String productPrice){
		
		String appendStatus = "0";
		
		try {
			
			SAXReader reader = new SAXReader();
			Document document = reader.read(xmlFilePath);
			Element root = document.getRootElement();
			Element item = root.addElement("item");
			
			item.addElement("productID").setText(productID);
			item.addElement("productName").setText(productName);
			item.addElement("productPrice").setText(productPrice);
			
			OutputFormat format = OutputFormat.createPrettyPrint();
		    format.setEncoding("utf-8");
		    XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFilePath),format);
		    writer.write(document);
		    writer.close();
		    appendStatus = "1";
			
		} catch (DocumentException e) {
			return appendStatus;
		} catch (UnsupportedEncodingException e) {
			return appendStatus;
		} catch (FileNotFoundException e) {
			return appendStatus;
		} catch (IOException e) {
			return appendStatus;
		}
		return appendStatus;
			
	}
	
	//修改XML Node內容
	public static String XMLChangeNodeValue(String xmlFilePath, String productID, String productName, String productPrice){
		
		String updateStatus = "0";
		
		try {
			SAXReader reader = new SAXReader();
			Document document = reader.read(xmlFilePath);
			Element root = document.getRootElement();
			@SuppressWarnings("rawtypes")
			Iterator it = root.elementIterator();
	        
			while (it.hasNext()) {
	            Element element = (Element) it.next();	            
	            if(productID.equals(element.elementText("productID"))){	            	
	    		    try {
	    		    	
		            	element.element("productName").setText(productName);
		            	element.element("productPrice").setText(productPrice);
		            	
		            	OutputFormat format = OutputFormat.createPrettyPrint();
		    		    format.setEncoding("utf-8");
		    		    XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFilePath),format);
						writer.write(document);
						writer.close();
						updateStatus = "1";
					} catch (IOException e) {
						return updateStatus;
					}	    		   
				}
	        }
			return updateStatus;
		} catch (DocumentException e) {
			return updateStatus;
		}

	}
	
	//刪除XML Node
	public static String XMLRemoveNode(String xmlFilePath , String productID){
		String removeStatus = "0";
		
		try {
			SAXReader reader = new SAXReader();
			Document document = reader.read(xmlFilePath);
			Element root = document.getRootElement();
			@SuppressWarnings("rawtypes")
			Iterator it = root.elementIterator();
	        
			while (it.hasNext()) {
	            Element element = (Element) it.next();
	            if(productID.equals(element.elementText("productID"))){  	
	    		    try {
		            	element.element("item");
		            	element.detach();
		            	
		            	OutputFormat format = OutputFormat.createPrettyPrint();
		    		    format.setEncoding("utf-8");
		    		    XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFilePath),format);
						writer.write(document);
						writer.close();
						removeStatus = "1";
					} catch (IOException e) {
						return removeStatus;
					}
				}	            
	        }
			return removeStatus;
		} catch (DocumentException e) {
			return removeStatus;
		}

	}
	
	public static void main (String[] args){
		String xmlFilePath = "C:\\Projects\\Javas\\sample.xml";
		//新增
		XMLAppendNode(xmlFilePath , "10004", "產品名稱4", "40");
		//修改
		XMLChangeNodeValue (xmlFilePath , "10001", "測試修改", "100");
		//刪除
		XMLRemoveNode (xmlFilePath , "10002");
	}
}

上述程式進行完後,會將原本的XML檔變成如下的內容:

<?xml version="1.0" encoding="utf-8"?>

<root> 
  <item> 
    <productID>10001</productID>  
    <productName>測試修改</productName>  
    <productPrice>100</productPrice> 
  </item>  
  <item> 
    <productID>10003</productID>  
    <productName>產品名稱3</productName>  
    <productPrice>30</productPrice> 
  </item>  
  <item> 
    <productID>10004</productID>  
    <productName>產品名稱4</productName>  
    <productPrice>40</productPrice> 
  </item> 
</root>

You may also like...

7,818 Responses

  1. This site was… how do you say it? Relevant!! Finally I’ve found something which helped me. Thank you.

  2. Do You Think Electric Heater Always Rule The World?
    slimline electric Heaters

  3. The Most Valuable Advice You Can Ever Receive On Toyota Yaris Key Replacement 2014 toyota Corolla key

  4. Yrefiyx表示:

    Здравствуйте!
    Заказать диплом любого университета.
    silkhunter.com/index.php?title=diplomandokscom

  5. What’s The Job Market For Titration ADHD Medications Professionals?
    Titration Adhd Medication

  6. Cazrvgr表示:

    Здравствуйте!
    Заказать диплом о высшем образовании
    telegra.ph/kak-prohodit-medkomissiyu-dlya-postupleniya-v-vuz-08-02

  7. Sazrody表示:

    Привет, друзья!
    Диплом любой специальности
    telegra.ph/data-okonchaniya-obucheniya-v-vuze-08-02

  8. Leonardpar表示:

    http://mexicopharmacy.win/# mexican mail order pharmacies

  9. Trefgig表示:

    Здравствуйте!
    Официальное получение диплома техникума с упрощенным обучением в Москве
    питание-онлайн.рф/zamorozka-produktov-s-sohraneniem-svojstv/#comment-631750
    Будем рады вам помочь!.

  10. fair Slots表示:

    10 Essentials Regarding Secure Slots You Didn’t Learn At School fair Slots

  11. Five Killer Quora Answers On Replacement Double Glazing Units
    Near Me Replacement Double Glazing Units Near Me

  12. Lazrmai表示:

    Привет, друзья!
    Мы изготавливаем дипломы психологов, юристов, экономистов и любых других профессий по приятным тарифам.
    telegra.ph/postuplenie-v-vuz-italii-08-02

  13. DouglasGed表示:

    reputable indian pharmacies: Online pharmacy – top 10 online pharmacy in india

  14. Mazrpvx表示:

    Привет, друзья!
    Как правильно купить диплом колледжа и пту в России, подводные камни
    sportavesti.ru/forums/users/michellefowler1998-2

  15. Elliottagips表示:

    “Дело “Лайф-из-Гуд” — “Гермес” — “Бест Вей”: свидетели говорят, что “все работало”
    Свидетель Николаев
    20 июня, 4 и 11 июля Приморский районный суд города Санкт-Петербурга, рассматривающий по существу уголовное дело № 1-504/24, связываемое с компаниями “Лайф-из-Гуд”, “Гермес” и кооперативом “Бест Вей”, провел очередные ­— восьмое, девятое и десятое по счету — заседания, посвященные допросу свидетелей обвинения и лиц, признанных следствием потерпевшими в рамках судебного следствия по делу (обзоры предыдущих заседаний публиковались ранее).

    На заседаниях были заслушаны показания граждан — как признанных потерпевшими, так и свидетелей обвинения. Показания приводятся по аудиозаписи, имеющейся в распоряжении редакции, и стенограмме, которую вела сторона защиты.

    Справка

    Предварительное расследование уголовного дела осуществлялось ГСУ ГУ МВД России по Санкт-Петербургу и Ленинградской области. На скамье подсудимых — 10 граждан: Анна Высоцкая (за полгода до ареста уволилась из “Лайф-из-Гуд”, до августа 2021 года работала ивент-менеджером “Лайф-из-Гуд”, в СИЗО более двух лет), Александра Григорьева (директор одного из “технических” юрлиц “Лайф-из-Гуд”, в СИЗО более двух лет), Михаил Измайлов (предприниматель, в СИЗО более двух лет), Елена Соловьева (главный бухгалтер ООО “Эксперт”, в СИЗО более двух лет), Альмира Гильберт (неработающая, в СИЗО с 2023 года), Дмитрий Мазанов (предприниматель, в СИЗО с 2023 года), Анатолий Наливан (предприниматель и региональный уполномоченный кооператива, в СИЗО с 2023 года), Денис Шишко (предприниматель, в СИЗО с 2023 года), Дмитрий Выдрин (неработающий, под домашним арестом) и 83-летний отец Романа Василенко, основателя компании “Лайф-из-Гуд” и кооператива “Бест Вей”, Виктор Василенко (пенсионер, под запретом определенных действий). Начиная рассмотрение по существу, Приморский районный суд продлил всем подсудимым меры пресечения на полгода, что оспаривается адвокатами в вышестоящих судах.

    Всем подсудимым предъявлены обвинения как в мошенничестве (ч. 4 ст. 159 УК РФ) и создании финансовой пирамиды (ч. 2 ст. 172.2 УК РФ), так и в организации преступного сообщества (ч. 3 ст. 210 УК РФ). Их, а также гражданских ответчиков — прежде всего кооператив “Бест Вей” — защищают почти два десятка адвокатов.

    В уголовном деле 221 лицо, признанное следствием потерпевшим, предъявляющее претензии как к компании “Гермес”, так и к кооперативу “Бест Вей” (для сравнения: у компании “Гермес” не одна сотня тысяч клиентов в России, у кооператива “Бест Вей” — около 20 тыс. пайщиков). Общая сумма ущерба в уголовном деле — 282 млн рублей, при этом на счетах кооператива арестовано около 4 млрд рублей, примерно столько же арестовано на счетах частных лиц.

    “Утверждать, является ли организация финансовой пирамидой, можно только по решению суда”
    Свидетель обвинения Николаев — первый замначальника Северо-Западного главка ЦБ. С подсудимыми незнаком. Пояснил, что в его подчинении в числе прочих подразделений находится отдел противодействия недобросовестным практикам на финансовых рынках.

    О ПК “Бест Вей” ему известно. “Я подписывал несколько писем в правоохранительные органы, это письмо было в 2019 году, ответа на него не поступило. Потом уже я несколько раз подписывал ответы на запросы правоохранительных органов. Информацию о предоставлении результатов рассмотрения нашей информации о наличии признаков финансовой пирамиды мы запрашивали в правоохранительных органах.

    Исходной точкой действий в отношении кооператива, по его словам, стало заключение из Центра компетенции из Краснодара — специалисты центра установили признаки, свидетельствующие о возможных безлицензионных действиях на финансовом рынке. По их просьбе эту информацию мы перенаправили в следственные органы, чтобы они установили: есть ли основания для возбуждения уголовного дела?

    “Кто подписал заключение из Краснодара, я не помню. К заключению прилагались ли какие-то документы, не помню. Изначальное письмо в органы — от 2019 года, писал не я и подписывал не я. Я не назову сейчас признаки пирамиды конкретно, но всегда они берутся из методических рекомендаций МВД о выявлении финансовых пирамид. Достаточно одного-двух признаков, чтобы заподозрить пирамиду. Ответ из органов тогда не поступил. Мне кажется, в письме упоминался “Гермес” помимо ПК “Бест Вей”. Были ли обращения граждан о нарушениях в кооперативе, мне неизвестно — вроде к нам такие не поступали. К нам пришла информация не о том, что это пирамида, что в деятельности усматриваются признаки пирамиды. Есть ли подтверждение признаков финансовой пирамиды, я не знаю — это не наша компетенция: это не поднадзорные нам организации, у нас нет никаких прав их проверять”.

    Свидетель сообщил, что инициатор проверки в Краснодаре ему неизвестен, основание проверки тоже неизвестно, как и подробности проверки: “Заключение, наверное, хранится в Краснодаре. Запрашивало ли его следствие, я не знаю”.

    “Финансовая пирамида, — сообщил он суду, — это понятие теоретическое. Проверка того, является ли организация пирамидой, ЦБ не проводится: нет соответствующих полномочий, запросить документы у самой организации не можем. Проводится анализ по открытым источникам. Реестра финансовых пирамид не существует, есть список организаций с признаками финансовой пирамиды, но что-то утверждать можно только по решению суда. В список организацию вносит центральный аппарат ЦБ”. Из признаков финансовой пирамиды смог назвать только повышенную доходность.

    Свидетель обвинения Ваганова — начальник отдела противодействия недобросовестным практикам Северо-Западного главка ЦБ. Подсудимых не знает.

    “Работаю начальником отдела с октября 2020 года. ПК “Бест Вей” мне известен по должностным обязанностям. Поступил запрос из правоохранительных органов в 2021 году, я готовила ответ. Были сообщения, что в 2019 году было обращение главка в правоохранительные органы — в ответе на запрос мы скопировали то обращение банка. В деятельности ПК есть признаки пирамиды — так было указано в письме 2019 года. Сейчас не помню, какие признаки пирамиды в кооперативе были обнаружены. При этом кооператив не был поднадзорен банку, потому проверку кооператива мы проводить не могли. Я пришла работать в феврале 2019 года, письмо в правоохранительные органы было направлено ранее”.

    По ее словам, анализ кооператива проводил Центр компетенции в Краснодаре. “Какие документы оценивались, мне неизвестно, я знакомилась только с финальным письмом Центра компетенции Краснодара за 2019 год, другой документации не было. “Гермес” в нем тоже фигурировал: было указано, что в 2019 году с кооперативом работает группа компаний. Запрос 2021 года пришел из ГСУ ГУ МВД России по Санкт-Петербургу и Ленинградской области. При ответе только ссылалась на письмо 2019 года, ничего не прикладывала. Документация из Краснодара как долго хранится, я не знаю, но материалы за 2019 год могут быть уже уничтожены”.

  16. Lazrcus表示:

    Привет, друзья!
    Приобрести диплом университета.
    telegra.ph/interaktivnye-tehnologii-obucheniya-v-vuze-08-02

  17. Cazrjjv表示:

    Добрый день!
    Мы готовы предложить документы техникумов
    longlive.com/node/1703

  18. TitusQuime表示:

    Набиуллина против развития
    Гермес менеджмент
    ЦБ блокирует экономический рост, связанный с деньгами простых граждан

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

    Единственная крупная попытка создать альтернативу ипотеке – работа кооператива «Бест Вей» – привела фактически к запретительным мерам в отношении кооператива и уголовному делу, рассматриваемому сейчас Приморским районным судом Санкт-Петербурга, к которому следствие – ГСУ ГУ МВД России по Санкт-Петербургу и Ленинградской области и Прокуратура Санкт-Петербурга – пытаются привязать кооператив.

    По словам председателя совета кооператива «Бест Вей», депутата Государственной думы VII созыва Сергея Крючека, выяснилась возмутительная история: мнение ЦБ о том, что кооператив имеет признаки финансовой пирамиды и его включение в предупредительный список из-за якобы наличия этих признаков, сформировалось на основании заключения некоего Краснодарского центра компетенций Южного главка ЦБ от 2019 года – который проводил некий анализ на основе открытых данных, а также обращений граждан – которые никто не видел, как и результатов самого анализа. И увидеть их скорее всего нельзя, так как документы в архиве от 2019 года, возможно, не сохранились, а сам этот центр компетенций, насколько известно, ликвидирован.

    Судя по канве событий, прозвучавшей в ходе судебного следствия, этот центр пересылает письмо в Северо-Западный главк ЦБ – только само письмо, а не все материалы исследования, и Северо-Западный главк на основании письма пишет обращение в правоохранительные органы о необходимости изучить вопрос возбуждения уголовного дела. Это письмо в 2019 году остается без ответа. Но в 2021 году уже ГУ МВД по Санкт-Петербургу и Ленобласти обращается в Северо-Западный главк ЦБ с запросом – и в ответ, по признанию самих сотрудников главка, пересылается калька с письма 2019 года. Никакой новой, дополнительной проверки не проводится.
    Парадоксы центробанковского контроля

    Почему анализ проводился в Южном главке, хотя кооператив юридически и фактически находится в Санкт-Петербурге и анализировать его деятельность должен Северо-Западный главк? Почему Северо-Западный главк выбрал роль ретранслятора, причем дважды, а не провел собственный анализ – учитывая, что кооператив находится у него под боком? Непонятно.

    И самое главное – не могли ли в основе заключения Краснодарского центра компетенций лежать недобросовестная конкуренция со стороны тех или иных организаций или намеренный оговор со стороны граждан, которые благодаря этим пересылкам скрыты от глаз? И если ответ на него положительный, Краснодарский центр, проведя проверку, и Северо-Западный главк, скопипастив краснодарское письмо, и головной офис ЦБ, опираясь на мнение своего питерского главка, которое на самом деле никто и не формулировал самостоятельно, выступили инструментом атаки на кооператив со стороны недобросовестных лиц.

    Фактически именно на основании этого мутного документа 2019 года принимается решение включить кооператив в предупредительный список ЦБ РФ осенью 2021 года. А после включения в список Банк России обращается в Генеральную прокуратуру и Роскомнадзор для блокирования официального сайта кооператива с личными кабинетами, очередью и системой платежей – что и происходит. При этом ни одним судом не установлено, что кооператив действительно является финансовой пирамидой – это может решить только суд, что признают в том числе свидетели обвинения, представляющие ЦБ.

    «Мы задавали и задаем специалистам Центробанка вопрос: почему они не запросили информацию у нас? – говорит Сергей Крючек. – Нам в ЦБ отвечают: потому что потребительский кооператив… не является для Банка России поднадзорной организацией. То есть Банк России не имеет права его проверять. Блокировать его деятельность на основании неведомых сигналов имеет, а проводить документальную проверку финансово-хозяйственной деятельности, по которой видно, работает он по закону или нет, – не имеет. Как говорится, удивительное рядом».

    При этом поиск признаков финансовой пирамиды велся на основе неких методических рекомендаций института МВД – которых никто в глаза не видел.

    «Какие признаки мы слышим? – комментируют представители кооператива. – Массированная реклама. Определения нет. И кооператив вообще не размещал рекламу – о нем рассказывали люди, рассказывала пресса, но рекламных объявлений в медиа: «Пойди туда, вступи в кооператив и купи квартиру» – не было.

    Использовался механизм сарафанного радио. В чем проблема? Этот метод продаж криминализирован? Почему банкам можно привлекать частных клиентов через этот механизм, а кооперативу нельзя?

    Средства не инвестировались. Но, простите, кооператив за период, когда он мог функционировать, то есть с середины 2014 года до февраля 2021-го, приобрел для пайщиков 2,5 тыс. квартир по всей России!»

    «Кроме того, в системе включения в предупредительный список ЦБ процедура очернения есть – а процедуры реабилитации нет, – подчеркивают представители кооператива. – Руководитель департамента ЦБ, принимавший решение, Валерий Лях сбежал из России. Депутат Гартунг еще год назад призывал защитить кооперативы – Центробанк обещал, но никаких законодательных предложений по защите кооперативов от него нет!»

    Адвокаты кооператива подчеркивают, что не оставят без внимания нанесение ущерба кооперативу и его пайщикам. «У нас появились новые основания для арбитражного разбирательства с ЦБ. Раньше кооператив проиграл в арбитражном суде, оспаривая свое включение в предупредительный список ЦБ: суд посчитал, что Банк России корректно применил свой внутренний нормативный акт о порядке включения в предупредительный список – законность самого этого акта не рассматривалась, к тому же учел, что с кооперативом связывается уголовное дело. Посмотрим, что теперь скажет арбитражный суд, узнав, что процедура оценки кооператива перед включением в предупредительный список была грубо нарушена и в уголовном деле нет никаких доказательств незаконности деятельности кооператива».

  19. DouglasGed表示:

    ed medicines: Cheap ED pills online – ed medicines

  20. You are so cool! I don’t suppose I’ve read through a single thing like this before. So wonderful to discover somebody with some genuine thoughts on this subject matter. Seriously.. many thanks for starting this up. This site is one thing that is required on the internet, someone with a little originality.

  21. Leonardpar表示:

    http://indiapharmacy.shop/# online pharmacy india

  22. Yrefdum表示:

    Привет!
    Заказать диплом университета.
    magnitolia.blogspot.com/2012/03/sharp-gf-9191

  23. Trefhtb表示:

    Добрый день!
    Как приобрести аттестат о среднем образовании в Москве и других городах
    simsonviglu.cz/phpBB/phpBB3/viewtopic.php?f=1&t=32846
    Всегда вам поможем!.

  24. DouglasGed表示:

    buying prescription drugs in mexico online: mexican pharmacy – medicine in mexico pharmacies

  25. Diplomi_jiEa表示:

    Добрый день!
    Приобрести документ университета вы имеете возможность у нас в Москве.
    zanasite.free.fr/laripostedumardi/doku.php?id=luxdiplom

  26. The 10 Most Scariest Things About Autolocksmith Key fob Replacement

  27. Lazrlcd表示:

    Привет!
    Мы можем предложить дипломы любой профессии по приятным ценам.
    telegra.ph/distancionnoe-obuchenie-v-vuze-ehto-08-02

  28. Lazrpyg表示:

    Здравствуйте!
    Мы изготавливаем дипломы любых профессий по выгодным тарифам.
    telegra.ph/distancionnoe-obuchenie-v-evropejskih-vuzah-08-02

  29. Richardexips表示:

    A chainsaw amnesty is protecting the rainforest in Borneo
    7я маркет интернет магазин иваново

    Borneo was once covered in lush, dense rainforests, but they are rapidly disappearing. The Southeast Asian island, roughly three times the size of the UK, has lost half its forest cover since the 1930s, destroying precious habitat for wildlife such as the critically endangered orangutan, as well as valuable carbon stores.

    A non-profit called Health in Harmony (HIH) is asking farmers to hand in their chainsaws in return for money, and a chance to set up an alternative livelihood.

    Borneo is divided between Indonesia, Malaysia and Brunei, and it is estimated that up to 10% of its land is taken up by industrial palm oil and logging operations. But deforestation isn’t just about large-scale tree clearance; some of those behind the logging are small-scale farmers, cutting trees as a sideline to make ends meet.

    Buyback and healthcare
    HIH launched its chainsaw buyback scheme in 2017, under the group’s Indonesian name, Alam Sehat Lestari (ASRI). Farmers who illegally log and sell the wood to timber companies are given around $200 for their chainsaws, as well as up to $450 in financial support for them to set up an alternative, sustainable livelihood, such as opening a shop, organic farming and even beekeeping.

    The scheme also involves addressing the root causes of the problem. According to HIH, many of the farmers who turn to logging do so because they need the money for basics like healthcare.

    “They live far from the healthcare clinics, and they see logging as a place where they can get quick cash,” explained Mahardika “Dika” Putra, conservation program manager at HIH. “If they need this amount of money, they cut this amount of trees.

    “We asked what solutions they think they need to live in harmony with the forest and they said, ‘high quality, affordable healthcare, and training in organic farming.’”

  30. You’ve made some really good points there. I checked on the internet to find out more about the issue and found most people will go along with your views on this website.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。