pkXML
 
Przyzwoita dokumentacja jest w trakcie tworzenia...

pkXML to darmowy parser plików XML. Nie wymaga dodatkowych bibliotek, plików ani instalowania czegokolwiek w systemie.

Jest to freeware do dowolnego użytku i nie ponosze żadnej odpowiedzialności za jakiekolwiek szkody czy inne straty wynikłe z prawidłowego, bądź nie, działania tego modułu.


Cechy:
  • obsługuje znaki kodowane jedno i dwu-bajtowo (unicode; odczyt/zapis; sam rozpoznaje format pliku)
  • czyta i zapisuje:
    • <xxx />
    • <xxx> ... <xxx />
    • atrybuty: <xxx attr1="aaa" attr2="bbb"/><?xxx?>
    • <!-- xxx -->
    • <![CDATA[ <xyz> <xyz2> ]]>
  • obsługuje wiele węzłów głównych
  • 			<tag1>
    			  <dana1>abc</dana1>
    			</tag1>
    			<tag2>
    			  <dana1>def</dana1>
    			</tag2>
    			<tag3>
    			  <dana1>ghi</dana1>
    			</tag3>
    			      
  • formatuje plik wyjściowy:
    			<tag1>
    			  <dana1>wartość</dana1>
    			  <dana2>
    			    <cośtam1 attr="test">
    			    <![CDATA[ <teścik ;))> ]]>
    			  </dana2>
    			  <dana3 />
    			</tag1>
    			<tag2 />
    			      
    Format wyjściowy jest konfigurowalny (tekst końca linii, wcięcia, skrócony zapis elementów, pomijanie pustych elementów, itp).

  • Zapisuje i czyta całe obiekty
  • jest odporny na znaki końca linii w wartościach i atrybutach
  • Potrafi odczytać atrybuty bez wartości oraz same wartości atrybutów bez nazwy
  • nadaje się do parsowania HTMLa oraz podobnych formatów
  • opcja AllowNoEndTag pozwala parsować pliki bez tagów końcowych:
    			<tag1>
    			  <dana1>wartość
    			  <dana2>
    			    <cośtam1 attr="test">
    			    <![CDATA[ <teścik ;))> ]]>
    			    <data>inna wartość
    			  </dana2>
    			  <data>jeszcze inna wartość
    			  <dana3 />
    			</tag1>
    			<tag2 />
    			      
  • Prosty w obsłudze:
    			/ZAPIS/
    
    			var xml : TpkXML;
    			begin
    			xml := TpkXML.Create;
    			try
    			  // wszystkie poniższe node "costam" odwołują się do jednego
    			  // elementu
    			 xml.NodeByName('costam').Value := 'TEST';
    			 xml.NodeByName('costam').AttrByName('id').Value := '1';
    			 xml.NodeByName('costam').NodeByName('pole1').Value := 'xyz';
    			 xml.NodeByName('costam').NodeByName('pole2').Value := 'xyz2';
    
    			 // albo szybciej (nie sprawdza czy node już jest)
    			 with xml.Append('costam2') do
    			  begin
    			   Append('costam').ValueInt := 1;
    			   Append('costam').ValueBool := false; // utworzy drugi node
    			                                        // o nazwie "costam"
    			   Append('costam innego').ValueExt := 1.6;
    			  end;
    
    			 xml.unicode := true; // wymuszam użycie unicode
    
    			 xml.SaveToFile('c:	est.xml');
    
    			finally
    			 xml.free;
    			end;
    
    
    			/ODCZYT/
    
    			var xml : TpkXML;
    			    i : Integer;
    			begin
    			xml := TpkXML.Create;
    			try
    			 xml.LoadFromFile('c:	est.xml');
    
    			 // xml.unicode zawiera informacje czy to unicode czy nie
    
    			 i := xml.NodeByName('costam').GetValueIntDf(0));
    
    			 ShowMessage(xml.NodeByAttr('costam').NodeByAttr('pol2').Value);
    			 ShowMessage(xml.NodeByAttr('costam', ['id'], ['1']).Value);
    
    			finally
    			 xml.free;
    			end;
    			      
  • i jest MÓJ ;p

Copyright 2009-2013 Paweł Konarski