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...

15,715 Responses

  1. KennethKex表示:

    pin-up casino giris: pinup az – pin up

  2. Elmerbuils表示:

    pin up вход: pin up вход – пин ап казино официальный сайт

  3. Elmerbuils表示:

    пинап казино: пин ап казино – пин ап вход

  4. Richardfek表示:

    пинап казино пин ап казино пин ап зеркало

  5. ZackaryGer表示:

    https://pinupaz.top/# pin up azerbaycan

  6. AlbertTam表示:

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

    Корпоратив на теплоходе в Москве
    Корпоративные мероприятия на теплоходе становятся все более популярными. Аренда теплохода для корпоративов позволяет укрепить командный дух, провести неформальные встречи в приятной обстановке и отвлечься от рутины офисной жизни. Среди преимуществ аренды теплохода можно выделить:

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

    Определите дату и время: Заблаговременно выберите дату и продолжительность аренды.
    Выбор теплохода: Исследуйте доступные варианты. Обратите внимание на вместимость, наличие удобств и внешний вид теплохода.
    Обсуждение условий: Свяжитесь с компанией-арендодателем, уточните все вопросы по тарифам, обеспечению услуг и правилам.
    Оформление договора: Подпишите договор аренды, в котором будут прописаны все условия вашего мероприятия.
    Подготовка к мероприятию: Запланируйте меню, развлекательную программу и декор.
    Аренда теплохода в Москве – это не только функциональное, но и яркое решение для вашего события. Будь то день рождения или корпоратив, вы сможете подарить себе и вашим гостям незабываемые эмоции и впечатления, а также приятные воспоминания, которые останутся с вами на долгое время.

  7. Richardfek表示:

    пин ап зеркало пинап казино пин ап зеркало

  8. Richardfek表示:

    pin up вход пин ап вход пин ап казино официальный сайт

  9. Elmerbuils表示:

    vavada вход: вавада – vavada вход

  10. KennethKex表示:

    вавада официальный сайт: vavada вход – vavada вход

  11. Richardfek表示:

    пин ап казино пин ап казино пинап казино

  12. Elmerbuils表示:

    pin up azerbaycan: pin-up – pinup az

  13. ZackaryGer表示:

    https://pinuprus.pro/# пин ап вход

  14. Horacesmupe表示:

     Так называемое уголовное дело «Лайф-из-Гуд» – «Гермес» – «Бест Вей» продолжает свою кровавую жатву – в конце марта умер от рака, быстро спрогрессировавшего из-за постоянного стресса, председатель Совета кооператива «Бест Вей», депутат Государственной думы VII созыва Сергей Иванович Крючек. Полтора года назад умерла жена Сергея Крючека – сердце не выдержало после обысков у них дома и допросов мужа.   Суд ни к чему не ведет Следствие действовало максимально жестко. От обысков с пристрастием в 2023 году пострадали сотни пайщиков кооператива по всей России, на скамье подсудимых оказались ни в чем неповинные технические сотрудники – помощник руководителя, один из бухгалтеров, менеджер сайта и конференций, несколько индивидуальных предпринимателей, а также 83-летний отец основателя кооператива «Бест Вей» и бывшего руководителя компании «Лайф-из-гуд» Романа Василенко – пенсионер Виктор Иванович Василенко. Один из допрашивавшихся – Шамиль Фахруллин, умер после допроса от сердечного приступа, в критическом состоянии после 12-часового допроса была Зоя Семенова, которая опровергла в суде свои показания, данные следствию (таких опровергших – десятки). Мама Романа Василенко Лариса Александровна Василенко столкнулась с настоящими пытками – явившись к ней в пять утра, оперативники заставили ее переодеваться при них, раздевшись догола, а в следственном управлении ее на несколько часов посадили на стул со сломанной ножкой и не давали пить. Она потеряла сознание, и только после этого ей удалось выйти из следственного управления. Случаев издевательств и пыток множество. При этом в суде, который идет с конца февраля 2024 года, дело откровенно разваливается – у признанных потерпевшими и свидетелей нет никаких доказательств своих утверждений, они в ходе перекрестных допросов один за другим попадаются на лжи. На последние суды приходят все меньше и меньше свидетелей обвинения – под разными предлогами они отказываются, чтобы не поддерживать лживую версию следствия. Кооператив без вины виноватых Сергей Крючек возглавил крупнейший в России кооператив – 20 тыс. пайщиков во всех регионах страны – весной 2022 года, в период острого кризиса, после только что прошедшего первого обыска в офисе кооператива, в ходе которого были изъяты вся документация, базы данных, серверы, даже личные вещи и трудовые книжки сотрудников (и ничего до сих пор не возвращено: все учетные записи пришлось восстанавливать с нуля). Он и сам стал жертвой обысков в своем подмосковном доме – в ходе которых была изъята и до сих пор не возвращена коллекция наград. Кооператив оказался «в уголовном деле» по странному стечению обстоятельств – он был объявлен следствием организацией, аффилированной с иностранной инвестиционной компанией «Гермес», а значит, призванной ответить по ее обязательствам – хотя кооператив никак не был связан с «Гермесом» ни организационно, ни финансово: имел только общую систему продаж продуктов через маркетинговую фирму «Лайф-из-Гуд». У «Гермеса» возникли проблемы с выплатами российским клиентам после взлома российского сегмента платежной системы системным администратором Евгением Набойченко – система в феврале 2022 года перестала работать, и появилась картинка с предложением обращаться в правоохранительные органы. Только выплаты прекратились не до действий Набойченко, а после них. Параллельно возникла ситуация со СВО и санкциями Запада, крайне затруднившая трансграничные финансовые операции.  Но кооператив «Бест Вей» никаких выплат не прекращал, он зарегистрирован в Санкт-Петербурге, все его активы находятся в России. И даже если учесть требования к нему со стороны лиц, признанных потерпевшими по уголовному делу, то нет никаких причин для блокирования работы кооператива: совокупный ущерб в обвинительном заключении – 282 млн рублей, притом что на счетах кооператива – более 4 млрд рублей. Эта сумма постоянно увеличивается, и еще 600 млн – дебиторская задолженность пайщиков кооперативу на сегодняшний день. 282 млн рублей могли быть заблокированы на счете кооператива, на котором аккумулируются средства из членских взносов, предназначенные для развития, – не было никаких причин блокировать всю деятельность кооператива! Тем не менее это длительное время происходило. Страхи охранителей Что стоит за преследованиями фирмы «Лайф-из-Гуд», успешно работавшей с 2014 до начала 2022 года; компании «Гермес», которая весь этот же период выполняла свои обязательства; кооператива «Бест Вей», к которому вообще нет никаких претензий, кроме как со стороны тех, кого следствие убедило, что раз кооператив незаконный, они смогут взыскать членские взносы и еще со стороны людей, которым кооператив, заботясь о ликвидности, не дал купить объект недвижимости с перепланировкой? Что стоит за поддержкой властью репрессий против кооператива?   Прежде всег, люди, которые пытаются получить контроль над миллиардными активами кооператива и других организаций, а также примкнувшие к ним силовики. Но похоже на то, что власть очень обеспокоил политический потенциал, стоящий за кооперативом, – все эти многотысячные собрания пайщиков на стадионах. Собрания людей, которым ничего не надо от государства – они готовы сами, вскладчину, решать свои жилищные и иные проблемы. Кого-то из охранителей это испугало и стало причиной зеленого света для репрессий против кооператива со стороны высокопоставленных силовиков.  Лжеэксперты и лжеобвинения Кооператив, как и «Гермес», был обвинен в том, что он является финансовой пирамидой. Приглашенный следствием эксперт из СПбГУ Маевский потребовал закрытого заседания – чтобы никто не слышал, как он плавает в теме. Утверждает, что финансирование покупки квартир старым пайщикам происходило за счет новых пайщиков: не понимает, что финансирование кооператива происходит не только за счет новых поступлений от пайщиков, но и за счет возвратных платежей за приобретенную на деньги кооператива недвижимость. А с осени 2021 года – времени внесения в предупредительный список ЦБ, почти исключительно за счет возвратных платежей от пайщиков, которым приобретена квартира. При этом ликвидность кооператива никак не пострадала. Объяснения со стороны адвокатов стали для этого экономиста откровением. Значительная часть пайщиков стремится ускорить погашение долга перед кооперативом, чтобы скорее получить квартиру в собственность – ведь квартира с помощью кооператива приобретается почти без переплат. Переплаты связаны только со вступительным и членскими взносами; налогами, которые платятся по тарифам для юридического лица; оплатой проверки юридической чистоты и независимой оценки недвижимости.  С весны 2022 года кооператив прекратил прием новых пайщиков, при этом на его ликвидности это никак не сказалось: средства на счетах продолжали расти, несмотря на то что многие пайщики боялись платить на арестованные счета и вносят платежи только сейчас.  Спаситель  С весны 2022-го до зимы 2025 года счета кооператива с небольшими перерывами были под арестом – причем запрещались даже выплаты по исполнительным листам пайщикам, которые приняли решение о выходе из кооператива, арестованы были, также с перерывами, квартиры, принадлежащие кооперативу, на 12 млрд рублей.  Под руководством Сергея Ивановича Крючека удалось добиться в судах снятия ареста с квартир, а затем частичного снятия ареста со счетов, разрешения с арестованных сумм выплачивать по исполнительным листам пайщикам, которые через суд добились возврата средств (в этом им активно помогал сам кооператив), а также налоги и заработную плату сотрудникам кооператива. Частичное «освобождение» счетов позволило осуществлять выплаты пайщикам, принявшим решение о выходе из кооператива и возврате своих средств.  Таких пайщиков около 2,5 тыс., общий объем выплат им – порядка 1,5 млрд рублей, значительная часть из них уже получила свои паевые средства – несмотря на огромные трудности с перечислением средств по 115-ФЗ: дело в том, что расследуется еще одно уголовное дело – по ст. 174 УК (хотя кооператив никаких денег за рубеж не переводил), открыто и новое дело по заявлениям потерпевших от «Гермеса», не попавшим в уголовное дело, которое сейчас рассматривается судом. Кроме того, идет гражданский процесс по иску прокуратуры, блокирующему возможность приема новых пайщиков. И, несмотря на эти трудности, кооператив, возглавлявшийся до недавнего времени Сергеем Крючеком, ежедневно осуществляет выплаты выходящим из него пайщикам и успешно восстанавливает деятельность.   Важнейшее достижение Крючека – создание механизма, когда при арестованных счетах пайщики, которым уже приобретены объекты недвижимости, получили возможность погашать свой долг перед кооперативом и переоформлять недвижимость в собственность за счет средств других пайщиков, которые передают им свои арестованные паевые взносы, а взамен получают живые деньги от счастливых приобретателей квартир в собственность. Таким способом пайщикам удалось погасить долг перед кооперативом и полностью перевести недвижимость в собственность по десяткам объектов недвижимости. Кооператив под руководством Сергея Крючека работал над тем, чтобы вновь начать приобретать квартиры пайщикам, которые стоят в очереди на покупку первыми. Тем более что ряд квартир будет освобожден пайщиками, которые отказались возвращать за них деньги и исключены из кооператива с возвратом паевых средств.  Кооператив, по мнению многих пайщиков, жив благодаря той огромной работе, которую проделал Сергей Крючек с весны 2022 года по весну 2025-го, успешному противостоянию произволу правоохранительной системы. Недаром один из пайщиков предложил назвать кооператив именем Сергея Ивановича.

  15. ZackaryGer表示:

    https://pinupaz.top/# pin up azerbaycan

  16. Ramonsoync表示:

    Проверка пропусков на МКАД: как найти и проверить пропуск для грузовиков и автомобилей
    проверить пропуск на мкад по номеру машины
    Если вам нужно проверить пропуск на МКАД, важно знать, что процесс может быть достаточно простым, если следовать установленным правилам и использовать правильные способы проверки. В современных условиях большинство предприятий и водителей используют онлайн-сервисы для проверки пропуска на МКАД по номеру машины или по номеру автомобиля, что значительно ускоряет процесс и позволяет получить необходимую информацию мгновенно.

    Почему важно проверять пропуск в Москве для грузовиков
    Особенно актуально это для владельцев грузовых транспортных средств, поскольку пропуск в Москву для грузовиков проверить или проверить пропуск в Москву для грузовиков по номеру автомобиля на портале государственных услуг или через специализированные системы. Это помогает избежать задержек и штрафных санкций при проезде по МКАД и въезде в столичный регион.

    Как проверить пропуск на МКАД по номеру автомобиля
    Для проверки пропуска на МКД по номеру машины существует несколько простых способов:

    Обратиться к онлайн-сервисам, предоставляющим информацию по базе данных ГИБДД.
    Использовать официальный сайт МВД или порталы городских властей Москвы.
    Ввести номер автомобиля в специальную форму для проверки пропуска на МКАД и получить актуальную информацию о статусе пропуска.
    Проверка пропуска в Москве для грузовиков
    Чтобы проверить пропуск в Москве для грузовиков по номеру автомобиля, достаточно воспользоваться онлайн-порталами или приложениями, предоставляющими услуги по проверке пропусков. Такой подход помогает оперативно убедиться, есть ли у вашего грузового транспорта действующий пропуск и всё ли в порядке для въезда в город.

    Как проверить пропуск на МКАД по номеру машины
    Если необходимо проверить пропуск на МКД по номеру автомобиля, рекомендуется:

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

  17. Richardfek表示:

    vavada вход вавада зеркало вавада казино

  18. Elmerbuils表示:

    pin up: pin up azerbaycan – pin-up

  19. Elmerbuils表示:

    pin up azerbaycan: pin up casino – pin-up

發佈留言

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