2009-02-05 5 views
8

C++ için XMLUnit gibi bir şey olup olmadığını bilen var mı? XML çıkışındaki düğümleri, değerleri, vb. Kontrol etmenin kolay bir yolunu arıyorum. Google testini Visual Studio'da kullanıyoruz, ancak işi kolaylaştıran herhangi bir kütüphanenin yeterli olacağını düşünüyorum.C + + için XMLUnit

Xerces'i XML ayrıştırıcısı olarak kullanıyorum ancak XMLUnit (http://xmlunit.sourceforge.net/), birim ayrıştırması için çok yararlı olan XML ayrıştırıcısına sarılmış bazı özelliklere sahip. Örneğin, XPath ifadeler kullanarak iddia, fonksiyonlar vb iki "benzer" XMLs,

+0

"Çek" derken ... Ne demek istiyorsun? XML ile uğraşmak için kendi STL Template sınıfım var, güzel ve iyi çalışıyor ve çok sıkı, çok verimli. Düğümleri okumanı, çocukları kontrol etmesini, düğümlerin metnini ve tüm özellikleriyle birlikte okumamı sağlar ... Ve XML'in çalışma zamanı, XML Açık, vb. Sırasında geçerli olduğunu kontrol eder. Etiketler birbirinden farklı şekilde biçimlendirilmiş olsa bile, birbirlerinin gerçek olup olmadıklarını görmek için iki XML dosyasını karşılaştıracaktır. – LarryF

+0

Evet .. Bu uzun bir sipariş olabilir. Ancak, iki "string" in ne kadar benzediğini görmek için kullanılan başka bir projede çalışıyorum. XML sınıfım ile iki dosyayı okudu ve iki düğüm karşılaştırdı ve size ne kadar ilgili olduklarını gösteren bir fikir verdiler ... (Yazı, etiket yok, ancak ..) – LarryF

cevap

-1

Burada paketini tinyxml kullanabilirsiniz karşılaştırma: Ben onunla çalışıyorum tinyxml

ve ücretsiz oldukça kolay ve böcek.

Bu bir xml işlemdir. Sanırım ünite testi için tasarlanmamıştı, ancak xml dosyalarınızı kontrol etmek/test etmek için kullanabilirsiniz. Beklendiği gibi xml bir DOM nesnesine yüklenir ve düğümlerde çalışmak için güzel bir API sağlar. i oldukça dolu özellikli http://xerces.apache.org/xerces-c/ de

Gal

-1

Xerces, diğer bazı XML ayrıştırıcıları çok iyi yapmazsanız iyi hata iletileri, bir C++ arayüze sahip ve üretir. Bunu söyledikten sonra, oldukça büyük & Kendi sarmalayıcıyı kullanarak C ayrıştırıcısını Expat çevreliyorum.

-1

Şu anda kişisel bir proje için libxml ++ kullanıyorum.

-1

Boost property_tree'yi xml, kullanımı kolay, oldukça sağlam ve Boost birim test çerçevesiyle birlikte kullanıyorum.

+0

Nasıl yapılacağını görebiliyorum xml'yi bir özellik ağacının içine ve dışına yerleştiririm, ancak birim testi için herhangi bir özellik göremiyorum. Mülkiyet ağaçlarını karşılaştırmanın bir yolu var mı? Çocuk düzeninin önemli olmadığı karşılaştırmalar yapabilir mi? Lütfen birim testi için nasıl kullandığını söyle. – walrii

0

Gerçekten http://pugixml.org/

gibi O:

  • son derece hızlı kararlı
  • olan MIT lisansı altında lisanslanmıştır harika belgeler ve örnek kodu vardır very STL arkadaş canlısı
  • xpath
+0

Yanılıyorsam düzeltin, ancak başka bir xml ayrıştırıcısına benziyor. Birim testi için ne var? Karşılaştırmak için operatörleri vardır, ancak sadece birleşik kaplar için kullanılmasını önerir. – walrii

+0

Evet, haklısın. Üzgünüz, peşinde olduğunuz belirli özelliklere sahip değil. – Homer6

+0

Darn. Bir şey özlemeyi umuyordum :) – walrii

1

geçmişte bunu gerçekleştirmek için Xerces ve cppunit bir arada kullandık için büyük desteği vardır oldukça aktif bir projeyi hala. Test durumlarımda, setUp() işlevinde Xerces API'sine sahip bir DOM nesnesi oluşturacağım. Bu DOM beklenen sonuçlarımı temsil eder. Test durumunda, daha sonra XML dosyasını okuyacağım ve test edilen sınıf, dosyanın içeriğini temsil eden bir DOM nesnesini dolduracaktır. Eşitliği kontrol etmek için, iki DOM ağacından Xerces API (DOMTreeWalker) üzerinden yürüyüp, DOM düğümlerinin içeriğini karşılaştırırken CPPUnit ifadelerini kullanırdım. Biraz can sıkıcıydı, ancak XmlUnit'i taklit edebilecek bir çerçeve yoktu. Google Test'in bu görevi yerine getirmek için CPPUnit kadar işe yarayacağını düşünürdüm.

Validating document in Xerces C++:

http://xerces.apache.org/xerces-c/faq-parse-3.html#faq-2

doğrulama için burada belirtildiği gibi bir hata işleyicisi kurup test durumu içine dahil etmek gerekir:

Xerces API XPath ifadeleri bazı desteği vardır

XSLT dönüşümü kontrolü için Xalan kullanmanız gerekir. O yüzden hiçbir büyük zorluk tahmin olmaz Xerces çalışır:

http://xalan.apache.org/old/xalan-c/index.html

C++ XMLUnit benzeri işlemleri ambalajlı herhangi bariz ürünlerini bulmak mümkün değildi. Öyleyse cevabın bence kendine ait olmak zorundasın. İyi şanslar.