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,869 Responses

  1. leak finding表示:

    The application is available free and there is a paid version as well. Twitter Training – Getting started with Twitter Twitter is just another example of the light speed at which communications are catapulting forward, and corporate America (as well as home business online marketers) should do our best to keep up.

  2. Arnoldten表示:

    medicine in mexico pharmacies mexican pharmaceuticals online mexico pharmacies prescription drugs

  3. I definitely did not understand that. Learnt one thing new today! Thanks for that.

  4. WayneCoirl表示:

    reputable mexican pharmacies online: purple pharmacy mexico price list – mexico pharmacies prescription drugs

  5. DominicJaw表示:

    п»їbest mexican online pharmacies: mexico drug stores pharmacies – pharmacies in mexico that ship to usa

  6. Nelsonbluck表示:

    medicine in mexico pharmacies: mexican drugstore online – mexican mail order pharmacies

  7. Lazrtgm表示:

    Добрый день!
    Приобрести диплом о высшем образовании.
    stareishina.com/gallery/image/3633-lux-diplomru

  8. Diplomi_lrEa表示:

    Добрый день!
    Заказать документ о получении высшего образования можно в нашей компании в Москве.
    asxdiplomik24.ru/kupit-diplom-tehnikuma-kolledzha

  9. Arnoldten表示:

    buying prescription drugs in mexico online mexican pharmaceuticals online mexico drug stores pharmacies

  10. Lazrmtz表示:

    Здравствуйте!
    Мы предлагаем дипломы любой профессии по выгодным ценам.
    topairpack.com/диплом-купить-надежно

  11. JamesVOF表示:

    Воины-пайщики оказались без защиты в тылу
    Пайщики «Бест Вей» — участники СВО готовы защищать свой кооператив
    Андрей Белоусов
    Многие пайщики кооператива «Бест Вей» и те, в чьих интересах приобретаются квартиры в кооперативе, — участники СВО. И они сами, и их родственники возмущены событиями, происходящими вокруг кооператива. Ведь защищая интересы страны на фронте, в тылу они не защищены от того, что не могут приобрести недвижимость из-за того, что счета кооператива с почти 4 млрд рублей уже более двух лет находятся под арестом — притом, что сумма ущерба по уголовному делу, рассматриваемому Приморским районным судом Санкт-Петербурга, согласно обвинительному заключению, составляет 282 млн рублей.

    «Надеемся, новое руководство Министерства обороны поможет урегулировать ситуацию»

    Наталья Пригаро, мать пайщика кооператива — участника СВО из Нефтеюганска Даниила Пригаро:

    — Сын расплатился за однокомнатную квартиру, приобретенную с помощью кооператива, еще два года назад, подал пакет документов на оформление квартиры в собственность в Росреестр в начале сентября 2022 года — и все это время не может зарегистрировать собственность на нее из-за того, что в Росреестре она значится как арестованная. В конце сентября 2022 года он был мобилизован. Сын брал кредит, чтобы расплатиться за квартиру с кооперативом. Планировал продать эту квартиру и взять квартиру побольше в ипотеку. Однако неоднократно накладывался арест на недвижимость кооператива, несмотря на то что сейчас ареста нет — последний арест, накладывавшийся осенью 2023 года, 19 февраля истек, ходатайства о новом аресте дважды отклонены судом, по Росреестру арест с квартиры до сих пор не снят. В результате кредит приходится платить, квартира в собственность до сих пор не оформлена.

    У сына нет никакой физической и финансовой возможности выяснять отношения с Росреестром — в административном или судебном порядке, он приезжает в отпуска на неделю-полторы, ему не до сутяжничества. Я нахожусь в Анапе, приобрела квартиру с помощью кооператива — сын не имеет возможности сделать на меня генеральную доверенность, а я не могу из Анапы приехать в Нефтеюганск и решать вопросы в Росреестре — кроме поезда, сейчас, сами понимаете, ничего не ходит (конец цитаты).

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

    «Надежда, что все разрешится, остается — не может же все быть коррумпировано»

    Елена Бойко — пайщик кооператива из Новосибирска и мать солдата, воющего в СВО, для которого она собиралась приобрести одну из двух квартир в кооперативе. «Я стала пайщиком кооператива в 2021 году. В январе 2021 года подала заявление на покупку двух квартир с помощью кооператива по накопительной программе. У меня двое детей — сын и дочь, им нужно жилье. В 2020 году взяли в ипотеку загородный дом — причем оформили на сына как единственного, кому ее могли одобрить, а в 2021 году он ушел в армию как призывник, а потом подписал контракт. Его относительно недавно отправили „за ленточку“. Думали, что поживем в ипотечном доме, и тут как раз подойдет очередь приобретать квартиры с помощью кооператива. Мы останемся жить в частном доме, а дети въедут в кооперативные квартиры».

    «Ипотека — это разорительно, — подчеркивает Елена, — мы взяли 2,5 млн, а за 30 лет отдадим 6 млн. Когда появился кооператив, для нас это была возможность предоставить каждому из детей жилье: за 10 лет или раньше они расплатятся с кооперативом, причем с минимальной по сравнению ипотекой переплатой, и у них будет собственное жилье. Из-за репрессий в отношении кооператива мы можем быть этой возможности лишены».

    «Я всем сердцем переживаю за ситуацию с кооперативом, заявление о выходе из кооператива пока не пишу — надеюсь, что его деятельность „разморозится“, — говорит Елена. — Обращаемся во все инстанции, в прокуратуру — приходят отписки. Смысл происходящего я понимаю хорошо — когда-то занималась кредитным потребительским кооперативом: нас тогда закрыл Центральный банк. Нашел формальный повод. Но настоящая причина была в том, что мы мешали банкам обирать клиентов. Но надежда на то, что все разрешится, остается — не может же быть все коррумпировано».

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

    «Для многих кооператив — единственная возможность приобрести квартиру»

    Лариса Зискинд — пайщица «Бест Вей», переехавшая с помощью кооператива с семьей — с дочерью, зятем и маленьким внуком ­- с Дальнего Востока в Белгородскую область. Ее зять, живущий в кооперативной квартире, находится на фронте СВО. «С помощью кооператива я приобрела квартиру в двухэтажном доме в селе Пушкарное Белгородской области — мы с дочерью переехали сюда. Мы уже два года расплачиваемся за него с кооперативом. Не до конца сделали ремонт, кухни фактически нет: моем посуду в ванной. Финансовых средств не хватает, так как зять уже год на СВО, пока ни разу не был в отпуске, и перевести деньги с его карты в ВТБ сейчас непросто, потому что карта — в расположении, до ближайшего банка ехать далеко, а он сам — на линии фронта. Мы фактически живем с выплат на ребенка, на мне кредиты — у меня полпенсии уходит на их оплату. Квартира по Росреестру находится под арестом, хотя арест по квартирам кооператива арест истек — а я боюсь ехать в Белгород, чтобы решать по ней вопрос. Я с ребенком на улицу гулять не выхожу в нынешней военной обстановке — сирены воздушной тревоги постоянные. Побыстрее бы наши войска создали санитарную зону в Харьковской области!»

    По поводу покупки квартиры Лариса сообщает, что «ипотека точно никак не светила. Кооператив — это 14 тыс. в месяц и всего лишь 10 лет. В кооперативе даже студентка может приобрести квартиру, почти не переплачивая. При покупке через банк придется заплатить еще как минимум за одну квартиру».

    «Среди пайщиков кооператива очень много пенсионеров, социально незащищенных людей, это была их единственная возможность приобрести квартиру, — говорит Лариса. — Из-за репрессий против кооператива мы можем лишиться единственного жилья. Мы куда только не писали в защиту кооператива. Но, видимо, слишком большой куш. Кооперативу не дают даже платить налоги. Надеемся, что отношение к кооперативу в результате справедливого разбирательства изменится в лучшую сторону».

    «Мы очень устали. Но боремся»

    Людмила Гарина — пайщица кооператива из Саратова, зять которой, проживающий вместе с ней в кооперативной квартире, участвует в СВО. «Я проживаю в кооперативной квартире почти три года вместе с дочерью и внуком, вносим ежемесячные платежи через госуслуги».

    «Возможности взять ипотеку не было, — говорит Людмила. — Фактически у нас один работающий человек — дочь, зять мобилизован, внук — студент, внучке — четыре года. Мы с мужем пенсионеры».

    «У нас с кооперативом проблем не было никаких, — говорит она, — но сейчас уверенности в завтрашнем дне нет. Пишем во все возможные инстанции, в том числе в Администрацию президента, ходили на прием к Володину. Пока ничего не помогает. Вся надежда на то, что суд разберется».

    «Хотелось, чтобы вопрос о возобновлении работы кооператива быстрее решился, — говорит она, — тогда стало бы проще. Когда кооператив заработает, будет совершенно иная ситуация. Мы очень устали. Но боремся».

    «20 тыс. пайщиков кооператива не так просто остановить»

    Алла Яровая — пайщик кооператива из Пятигорска и представитель пайщицы Людмилы Дворцовой, сын которой, Игорь Дворцов, находился на СВО, а теперь служит внутри страны. «Людмила приобрела с помощью кооператива в Пятигорске квартиру для своего сына. Вступила в кооператив она в 2017 году, сначала находилась в накопительной программе — накапливала на первоначальный паевый взнос, накопила, потом стояла в очереди на приобретение жилье, приобрела с помощью кооператива однокомнатную квартиру за 1450 тыс. рублей. Потом приобрела квартиру и постепенно полностью за нее расплатилась. Работала для этого на двух работах, в том числе санитаркой в инфекционном отделении».

    Но оформить квартиру в собственность не удалось, так как она оказалась под арестом, поясняет Алла. И хотя арест 19 февраля истек и больше не накладывался, суд первой инстанции в Пятигорске этот арест подтвердил. «По вопросу получения права собственности и снятия ареста мы обратились в Пятигорский городской суд, где судья очень предвзято отнесся к решению вопроса и мы получили отказ, — говорит Алла, — Хотя аналогичный вопрос рассматривался в Минераловодском суде и там судья вынесла положительное решение и в настоящий момент пайщик получил право собственности на свою квартиру. Предстоит рассмотрение в апелляционной инстанции — несмотря на то, что рассматривать нечего: ареста на недвижимость кооператива сейчас нет. А на квартиру Людмилы Дворцовой — почему-то есть».

    «Кооператив — единственная возможность для людей со средним достатком получить жилье, — говорит Алла, — Нерешенный вопрос — налоги. Мы вынуждены платить налоги с юридических лиц, но мы же физические лица. К депутатам — с нас берут налог как с юрлица. Почему мы должны оплачивать — мы же физлица? Во многих регионах это сделано. Надеемся добиться того, чтобы это было сделано по всей стране».

    «20 тыс. пайщиков кооператива не так просто остановить, — подчеркивает пайщица. — Это наши деньги, и мы за них боремся. Обязательно отстоим наш кооператив!»

    «Активно участвую в защите кооператива»

    У пайщицы кооператива, жительницы из Ленинградской области Татьяны Власенко старший сын находится на СВО с сентября 2022 года. «Три месяца проходил обучение, а потом оказался „за ленточкой“, — говорит Татьяна. — Мы должны были в конце лета 2022 года купить квартиру с помощью кооператива — квартиру планировали большую. Но работа кооператива оказалась заблокирована, и кооператив не может ничего купить уже более двух лет, так как и его счета, и его деятельность заблокированы. Деньги пайщиков, собранные для приобретения квартир, при этом обесцениваются».

    «Я активно участвую в защите нашего кооператива, — говорит Татьяна. — Езжу на все суды в Санкт-Петербурге, хотя живу в деревне — ехать два с половиной, а то и три часа, мне 64 года, а путь неблизкий. И сын в этом поддерживает меня».

    «Вот уже более двух лет работа кооператива заблокирована, деньги обесцениваются»

    У пайщицы из Хабаровска Натальи Ромашко на СВО было два племянника — один, к сожалению, погиб. Планировалась покупка большой квартиры в Хабаровске, Наталья состояла в накопительной программе. «Вот уже более двух лет работа кооператива заблокирована, деньги обесцениваются, — говорит Наталья. — Я участвую в защите кооператива, пишу письма в прокуратуру, в высшие государственные инстанции, потому что нарушаются наши права, нас лишают возможности приобрести квартиру вне ипотечной системы. Пока приходят одни отписки, но борьбу мы продолжаем!»

    «Ситуация — как на СВО»

    Пайщица Светлана Иванова из Новосибирска, волонтер СВО, планировала приобрести с помощью кооператива две квартиры — для себя и для сына, который воюет на СВО добровольцем. «До этого я продала квартиру и сейчас вообще без собственного жилья, — говорит она. — Вступила в кооператив по накопительной программе, рассматривали для приобретения квартиры Крым и Новосибирск. В СВО участвую как волонтер — не остаюсь в стороне, когда Родине нужна помощь».

    «От ситуации с кооперативом очень многие люди пострадали, — говорит Светлана. — Ситуация — как на СВО. И еще больше пострадают, если реализуется плохой сценарий. Хочется надеяться на то, что все образуется, правда восторжествует. Заявление о выходе из кооператива и возврате паевых средств я не подавала. Готова продолжить участие в нем, готова приобрести недвижимость с его помощью: это самый лучший вариант покупки квартиры».

    «Сдаваться в планах нет»

    Пайщица Марина Янковская родом из Хабаровска, она переехала в Новороссийск, ее супруг погиб на СВО. «У нас уже подходила очередь на покупку квартиры в Новороссийске для нашей семьи, мы должны были подбирать объект, — рассказывает она. — Но два года назад все остановилось. Хотели приобрести двухкомнатную квартиру в Новороссийске. Деньги лежат на арестованных счетах кооператива — а недвижимость за это время подорожала. Надеемся хоть что-то приобрести после того, как счета разблокируют».

    «Мы всячески поддерживаем кооператив, — говорит Марина. — Записывали видео, что мы не обманутые, а вполне довольные пайщики, объясняли, что это никакая не пирамида, а организация, созданная в помощь людям. Ждем, когда снимут эти аресты. Сдаваться в планах нет».

  12. WayneCoirl表示:

    best online pharmacies in mexico: buying from online mexican pharmacy – mexican border pharmacies shipping to usa

  13. DominicJaw表示:

    п»їbest mexican online pharmacies: reputable mexican pharmacies online – mexican pharmaceuticals online

  14. Nelsonbluck表示:

    mexican online pharmacies prescription drugs: buying prescription drugs in mexico online – pharmacies in mexico that ship to usa

  15. You produced some decent points there. I looked online for your issue and located most people is going together with with your website.

  16. I think other web-site proprietors should take this website as an model, very clean and magnificent user genial style and design, let alone the content. You are an expert in this topic!

  17. Arnoldten表示:

    mexico pharmacy buying prescription drugs in mexico mexican rx online

  18. After study a number of the content in your website now, i genuinely appreciate your method of blogging. I bookmarked it to my bookmark web site list and will also be checking back soon. Pls have a look at my web site also and tell me what you think.

  19. 17 Reasons You Shouldn’t Avoid Motor Vehicle Legal Motor Vehicle Accident Attorneys

  20. WayneCoirl表示:

    mexican mail order pharmacies: medication from mexico pharmacy – medicine in mexico pharmacies

  21. DominicJaw表示:

    best online pharmacies in mexico: buying prescription drugs in mexico – reputable mexican pharmacies online

  22. What Is The Reason? Double Glazing Repairs Near Me Is Fast Becoming The Trendiest Thing Of 2023?
    double glazed unit replacement

  23. The Three Greatest Moments In Citroen Key Replacement Near Me History
    How Much Is A Replacement Citroen Key

  24. Dnrtgmf表示:

    Здравствуйте!
    Приобрести документ ВУЗа вы имеете возможность у нас.
    diplomyx.com/kupit-diplom-magistra
    Хорошей учебы!

  25. Mazrhtw表示:

    Привет, друзья!
    Возможно ли купить диплом стоматолога, и как это происходит
    diploms-man.ru

  26. Nelsonbluck表示:

    buying prescription drugs in mexico: pharmacies in mexico that ship to usa – buying prescription drugs in mexico online

  27. Upvc Repairs Near Me Tools To Help You Manage Your Daily Lifethe One
    Upvc Repairs Near Me Trick That Everyone Should Know upvc repairs near me

  28. Lazruyz表示:

    Привет!
    Мы изготавливаем дипломы психологов, юристов, экономистов и любых других профессий по доступным ценам.
    socialmoby.com/read-blog/379_hotite-priobresti-attestat-u-nadezhnogo-proizvoditelya-zhdem-vas?mode=night

  29. Arnoldten表示:

    reputable mexican pharmacies online medicine in mexico pharmacies medicine in mexico pharmacies

  30. Do you have twitter? Great stuff by the way…

發佈留言

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