我通常都寫得一手這樣的XML:在編寫XML時,最好手工編寫它,還是在PHP中使用諸如simpleXML之類的生成器?
<tag><?= $value ?></tag>
已經找到工具,如SimpleXML的,我應該使用那些呢?使用這樣的工具做這件事有什麼好處?
我通常都寫得一手這樣的XML:在編寫XML時,最好手工編寫它,還是在PHP中使用諸如simpleXML之類的生成器?
<tag><?= $value ?></tag>
已經找到工具,如SimpleXML的,我應該使用那些呢?使用這樣的工具做這件事有什麼好處?
良好的XML工具將確保生成的XML文件正確地針對您正在使用的DTD進行驗證。
好的XML工具還可以節省大量重複鍵入的標籤。
使用發生器。
使用生成器的優點是你有一致的標記,並且不會冒用大括號或引號或忘記編碼的風險。這是至關重要的,因爲直到運行時纔會發現這些錯誤,除非您有重要的測試來確保其他情況。
如果你正在處理XML的一個小一點,有一個在做手工的小傷害(只要你能避免錯別字)。但是,對於較大的文檔,您最好使用編輯器,它可以根據模式驗證您的文檔並防止輸入錯誤。
手寫並不總是最好的做法,因爲在大型XML中可以寫錯標籤並且很難找到錯誤的原因。所以我建議使用XMl解析器來創建XML文件。
總是使用某種工具。 XML可能非常複雜,我知道PHP傢伙習慣於使用一些小東西,但如果有人不使用System.XML來創建XML,那麼它就是.NET世界的一種巨大的代碼味道。
使用一個好的XML生成器將大大減少由於胖指法,注意力流失或任何其他人類虛弱造成的潛在錯誤。然而,有幾個不同的級別機器的協助,可供選擇,:
起碼,使用,做語法高亮和自動縮進一個程序員的文本編輯器。只是注意到您的文字顏色與您期望的不同,或者不符合您的期望,可能會導致您錯誤地錯過了一個錯字。
更好的是,退一步,將XML作爲您喜歡的任何語言的數據結構編寫,而不是將該數據結構轉換爲XML。 Perl爲你提供了一些模塊,例如用於小型工作的輕量級XML::Simple或者更高級的XML::Generator;使用XML::Simple
只是將您的內容安排到標準的散列哈希哈希中,並通過適當的方法運行它。
史蒂夫
您可以使用DOM extenstion這是相當繁瑣的對碼。我個人認爲,從頭開始編寫XML文檔的最有效方法是使用PHP附帶的XMLWriter extension,並且在最新版本中默認啓用。
$w=new XMLWriter();
$w->openMemory();
$w->startDocument('1.0','UTF-8');
$w->startElement("root");
$w->writeAttribute("ah", "OK");
$w->text('Wow, it works!');
$w->endElement();
echo htmlentities($w->outputMemory(true));
通過任何類型的字符串操作生成XML會爲進入代碼的錯誤打開大門。例如,您發佈的非常簡單的示例,如果$ value包含&符號,則不會生成格式良好的XML。
在XML中沒有太多的邊緣情況,但是有足夠的時間來編寫自己的代碼來處理它們是浪費時間。 (如果你不處理它們,你的代碼會在某一天意外失敗,沒人願意。)任何好的XML工具都會自動處理這些情況。
eclipse中的XML工具也非常有用。只需創建一個新的XML架構和文檔,並且您可以輕鬆使用大多數圖形工具。我想指出,事先了解模式如何工作將是有用的。
速度可能是一個問題...手寫可以快很多。
嘿,不要bash PHP程序員!僅僅因爲PHP本身並不鼓勵編寫好的代碼,不要以爲我們都沒有做! – 2008-09-26 14:14:06