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

  1. DanielTet表示:

    cytotec abortion pill https://tamoxifen.bid/# nolvadex side effects
    furosemide 40mg

  2. Mazrgiy表示:

    Добрый день!
    Как получить диплом о среднем образовании в Москве и других городах
    tekst-pesni.ru/index.php?name=account&op=info&uname=owufipel

  3. DanielTet表示:

    buy cytotec http://tamoxifen.bid/# cost of tamoxifen
    furosemide 40mg

  4. After looking into a number of the blog articles on your website, I really like your technique of writing a blog. I book-marked it to my bookmark webpage list and will be checking back in the near future. Please check out my website too and tell me your opinion.

  5. Stephenzek表示:

    http://lipitor.guru/# lipitor 40 mg generic price

  6. PatrickBoads表示:

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

    При формировании рейтинга учитывались следующие показатели:

    Опыт работы в сфере юриспруденции;
    Приемлемая оплата услуг юриста;
    Квалификация сотрудников, успешность судебной практики;
    Наличие бесплатных консультаций, оперативность работы.
    Чтобы заказать юридические услуги в проверенной и надежной организации, воспользуйтесь данными нашего рейтинга. Обратившись в фирмы из представленного списка, вы сможете успешно разрешить возникшую проблему в свою пользу.

  7. Stanleyinolf表示:

    cytotec online Misoprostol price in pharmacy cytotec buy online usa

  8. JamesJus表示:

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

    Бесплатная юридическая консультация по телефону может стать вашим спасением. Предоставленная нами консультация поможет вам сориентироваться в вопросе и решить, нужна ли вам дальнейшая помощь, которую может обеспечить Коллегия адвокатов № 1. После того как юридическая консультация по телефону будет проведена и проблемы будут чётко обозначены, наши юристы могут оказать вам и дальнейшие услуги — от оформления нужных документов до представления ваших интересов в зале суда.

  9. Stanleyinolf表示:

    lisinopril 25 mg cost Lisinopril refill online lisinopril hctz

  10. Jamesric表示:

    tamoxifen therapy: Purchase Nolvadex Online – common side effects of tamoxifen

  11. MathewCluth表示:

    Elon Musk’s X just sued a nonprofit advertising group out of existence
    лучшие адвокаты в россии
    A major ad industry group is shutting down, days after Elon Musk-owned X filed a lawsuit that claimed the group illegally conspired to boycott advertising on his platform.

    “GARM is a small, not-for-profit initiative, and recent allegations that unfortunately misconstrue its purpose and activities have caused a distraction and significantly drained its resources and finances,” the group said in a statement Friday. “GARM therefore is making the difficult decision to discontinue its activities.”

    The group, Global Alliance for Responsible Media, also known as GARM, is a voluntary ad-industry initiative run by the World Federation of Advertisers that aims to help brands avoid having their advertisements appear alongside illegal or harmful content. GARM confirmed it is still planning to defend itself in court.

    The end of GARM marks a temporary victory for Musk and X CEO Linda Yaccarino, even though a judge hasn’t made a ruling yet.

    “No small group should be able to monopolize what gets monetized. This is an important acknowledgement and a necessary step in the right direction. I am hopeful that it means ecosystem-wide reform is coming,” Yaccarino posted on X Thursday.

    However, the lawsuit could drive away even more advertisers from X, Nandini Jammi and Claire Atkin, founders of watchdog group Check My Ads Institute wrote in an op-ed Thursday. “Everyone can see that advertising on X is a treacherous business relationship for advertisers,” they said.

  12. Sazrlxy表示:

    Добрый день!
    Заказать документ ВУЗа
    urpc.ru/institution/mat-teh/dostup-k-elektronnym-resursam/

  13. Your style is really unique compared to other folks I have read stuff from. Many thanks for posting when you’ve got the opportunity, Guess I’ll just book mark this site.

  14. Xazreqd表示:

    Привет, друзья!
    Купить документ о получении высшего образования.
    Мы предлагаем дипломы любых профессий по приятным тарифам.
    camp-fire.jp/profile/BernardCruz
    Рады оказать помощь!.

  15. вывод из запоя в стационаре ростова вывод из запоя в стационаре ростова .

  16. DanielTet表示:

    buy cytotec pills https://lipitor.guru/# lipitor generic coupon
    lasix dosage

  17. DanielTet表示:

    cytotec pills buy online https://lisinopril.guru/# prinivil generic
    lasix 40mg

  18. Willienus表示:

    МВД против участников СВО

    Питерский главк МВД сделал Колокольцева пустозвоном и предателем Родины

    Так называемое уголовное дело «Лайф-из-Гуд» – «Гермес» – «Бест Вей», состряпанное питерским главком МВД России совместно с рядом сотрудников ЦБ, выглядит весьма невзрачно – особенно на фоне громких заявлений, звучавших от руководителей Министерства внутренних дел на всю страну: сотни миллиардов ущерба, десятки тысяч «пострадавших». И при этом только 221 гражданин, признанный следствием потерпевшим, с суммой ущерба отнюдь не в миллиарды, а в 282 млн рублей. Ложь прозвучала из уст министра Колокольцева с трибуны Совета Федерации, его пресс-секретарь Волк разместила лживые сведения во всех федеральных СМИ.

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

    При этом уже более двух лет сначала по ходатайству ГСУ ГУ МВД по Санкт-Петербургу, а затем Прокуратуры Санкт-Петербурга арестованы 4 млрд. на счетах кооператива, хотя ущерб в обвинительном заключении – 282 млн рублей, и даже (незаконная) обязанность выплатить его в отношении кооператива никак не повлияла бы на его ликвидность. Однако цель – правдами и неправдами забрать именно 4 млрд.

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

    Среди этих пайщиков – сотни участников СВО, которые защищают Родину с оружием в руках – но в тылу по отношению к ним совершается преступление: их пытаются лишить жилья и денег.

    Преступная следственная группа

    Уголовное дело дурно пахло изначально. Выяснилось, что «нулевая» потерпевшая Наталья Школьник, с которой началось уголовное дело, не сама подала заявление в правоохранительные органы – оперуполномоченный УЭБиПК ГУ МВД по Санкт-Петербургу майор полиции Алексей Машевский ездил к ней за заявлением в Республику Коми: то есть дело было срежиссировано. Кстати, Школьник на заседании Приморского районного суда отказалась от статуса потерпевшей по этому уголовному делу, который был ей присвоен следствием.

    При этом Школьник и другие из самой первой группы «потерпевших» имеют отношение к созданию кооператива «Вера» – копии кооператива «Бест Вей», которую создала группа бывших участников «Бест Вей» как проект. Этот кооператив пытался оттянуть у «Бест Вей» пайщиков.

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

    Любопытно, что относительно недавно одна из экс-членов следственной группы – майор юстиции Зайцева, была поймана вместе с коллегой на взятке в 8 млн. рублей, которую они вымогали по другому уголовному делу.

    Следственную группу возглавляла майор, затем подполковник юстиции Екатерина Сапетова (по завершении расследования она уволилась из МВД) – систематически занимавшаяся подлогом сама и организовывшая подлог с помощью подчиненных следователей. Ее дело продолжил новый руководитель следственной группы – замначальника ГСУ ГУ МВД по Санкт-Петербургу полковника юстиции Александр Винокуров (Сапетова формально перешла на позицию его заместителя). Он издал постановление о признании кооператива гражданским ответчиком по уголовному делу на 16 млрд рублей – заведомо подложное, так как в уголовном деле вообще не оказалось исковых требований к кооперативу.

    Следствие совершило и другие преступления.

    Взятие заложников. Следственные действия были завершены в июне 2023 года притворно – чтобы не выпускать из тюрьмы обвиняемых, от которых следствие добивалось показаний. Если бы следствие было продлено в июне прошлого года, их пришлось бы отпустить, так как в августе у четверых обвиняемых истекал предельный срок содержания под стражей.

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

    Чтобы держать их в заложниках – и добиваться оговора других граждан в обмен на изменение меры пресечения.

    Притворное завершение следственных действий. Фактически следственные действия не завершались – они продолжались весь период, когда происходило ознакомление обвиняемых с материалами уголовного дела, что также является грубейшим нарушением УПК. В результате количество потерпевших уже в период финальных процессуальных мероприятий в рамках предварительного расследования, накануне передачи обвинительного заключения в прокуратуру для утверждения, увеличилось с 198 до 221.

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

    Неисполнение решений судов. Неисполнение судебных постановлений – уголовное преступление, на которое следствие шло несколько раз.

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

    Принуждение граждан к тому, чтобы они подали заявления в качестве потерпевших. Группу потерпевших собирали более трех лет, набрали только из 221 человека, хотя количество клиентов компании «Гермес», в отношении которой выдвигаются претензии, по данным самого следствия, более сотни тысяч. При этом среди потерпевших есть немало тех, кто предъявляет претензии на суммы менее 100 тыс. – то есть набирали для количества.

    «Потерпевшие» не имеют никаких внятных претензий к «Гермесу» – все их претензии в основном оказываются ложью, за которую они ответят после окончания суда.

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

    Заведомо необоснованные требования о возмещении ущерба. По инициативе следственной группы двое «потерпевших» в октябре прошлого года написали заявления о моральном ущербе на 1 млрд рублей каждое. Это заведомо ничтожные заявления – вызвавшие смех в зале Приморского районного суда, потому что суды по событиям, не связанным с причинением смерти, присуждают моральный ущерб в размере нескольких десятков тысяч максимум.

    Именно члены оперативно-следственной группы и их кураторы из питерского главка МВД и федерального МВД, а не 10 ни в чем неповинных людей – технических сотрудников или родственников руководителей компании «Лайф-из-Гуд» – должны сидеть на скамье подсудимых.

    Питерская прокуратура покрывает преступления

    Печально, но на все эти нарушения не отреагировала Прокуратура Санкт-Петербурга. В деле есть показания так называемых потерпевших о том, что они получали доход по счетам «Виста» – то есть факт кражи опровергается их собственными показаниями.

    Есть две бухгалтерские экспертизы криминалистического центра Минюста: в обеих утверждается, что 81% средств кооператива «Бест Вей» шел на приобретение недвижимости, а 19% – на обеспечение деятельности кооператива: маркетинговые траты, налоги, зарплаты сотрудникам и пр. При этом средства на эти нужды шли не из паевых средств кооператива, а из вступительных и членских взносов – получается, что паевые средства на 100% расходовались на покупку недвижимости для пайщиков. То есть бухгалтерские эксперты Минюста подтвердили, что в деятельности кооператива не было вывода средств пайщиков.

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

    Сам министр Колокольцев врет Совету Федерации, врет правительству, врет Президенту – врет, врет и врет, выдумывает громкие дела с помощью своей помощницы Ирины Волк и других членов собственной команды.

    Более того, ведомство выступило против армии и участников СВО, нанося им прямой ущерб в тылу. Действия МВД вредят обороноспособности и подрывают престиж военной службы.

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

    А узники, почти три года томящиеся в тюрьме без приговора суда, должны быть срочно отпущены.

    Надеемся, суд восстановит справедливость в этом деле, освободит невиновных и накажет тех, кто действительно совершил преступления против граждан и страны.

  19. Femininity表示:

    This is the right webpage for anybody who wants to find out about this topic. You know so much its almost hard to argue with you (not that I actually would want to…HaHa). You definitely put a brand new spin on a topic that’s been discussed for years. Wonderful stuff, just great.

  20. Lazrtbk表示:

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

  21. Lazrrec表示:

    Привет, друзья!
    Заказать диплом любого университета.
    telegra.ph/postuplenie-v-amerikanskie-vuzy-08-02

  22. Jamesric表示:

    is nolvadex legal: Purchase Nolvadex Online – where can i buy nolvadex

  23. Stephenzek表示:

    http://lisinopril.guru/# lisinopril 1.25

  24. Dnrtati表示:

    Привет!
    Купить документ о получении высшего образования вы можете в нашей компании в столице.
    aromatov.wooden-rock.ru/forum/topic.php?forum=1&topic=14445

  25. Mazrmel表示:

    Здравствуйте!
    Официальная покупка диплома ПТУ с упрощенной программой обучения
    financetimenews.ru/diplom-po-zhelaniyu-priobreti-obrazovanie-kotoroe-sootvetstvuet-tvoim-interesam/

  26. Diplomi_vzEa表示:

    Привет!
    Купить документ о получении высшего образования вы имеете возможность у нас в Москве.
    longlive.com/node/1697

  27. Pretty! This has been a really wonderful article. Many thanks for providing this info.

  28. Jamesric表示:

    buy misoprostol over the counter: buy cytotec online – buy cytotec pills online cheap

  29. DanielTet表示:

    buy cytotec pills https://lipitor.guru/# lipitor rx
    lasix furosemide 40 mg

  30. Cazrsnj表示:

    Привет!
    Мы можем предложить документы ВУЗов
    furaffinity.net/journal/10903843

發佈留言

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