2009-12-27 110 views
1

這是將地址存儲在XML文件中的正確方法嗎?如果是這樣,我會如何用三行回顯它,就像使用PHP編寫地址一樣。如果不是什麼是正確的方式? (該文件不完整,我只在地址感興趣。)正確的XML語法

<store name="Pizza R Us" Store_address="16 Main St Anytown, US 00000"> 
<items> 
<pizzas> 
    <topping> 
    <name>Tomato and Cheese</name> 
    <price> 
    <small>$6.85</small> 
    <large>$10.85</large> 
    </price> 
    </topping> 
</pizzas> 
</items> 
</store> 

回答

1

針對存儲地址:建議的方法不是將它存儲爲屬性,而是可以。出於多種原因,最好將相關數據存儲在標籤中而不是屬性中。你這樣做的方式使得更難以爲程序員拉出街道或城市。閱讀,維護也很困難,而且在不破壞現有代碼的情況下不容易更改。

欲瞭解更多詳細信息,請閱讀以下頁面。尤其是「我最喜歡的方式」和「避免XML屬性?」部分?

http://www.w3schools.com/xml/xml_attributes.asp

2

這是不太良好的XML:你在「存儲地址」屬性名稱的空間。

XML數據通常是高度結構化的,所以舉例來說,讓美元出現價格顯得有點奇怪。另外,地址是一個單獨的字符串,而不是分成組件。當然,這取決於你如何構建數據,這取決於你的應用程序。

你將如何顯示數據完全取決於你使用的編程環境,你沒有告訴我們。

0

價格是指頂部還是整個披薩?如果它指的是整個披薩,爲什麼它嵌入頂部?

0

不,這不是良好的XML - 屬性名不能有空格在其中,所以:

Store address="16 Main St Anytown, US 00000" 

應該是:

StoreAddress="16 Main St Anytown, US 00000" 
0

,因爲它代表有沒有辦法來提取在給定的XML片段的屬性值換行符。在那裏沒有換行符,只有空格,沒有辦法告訴空格,該空格應該表示從一個空格開始的換行符。

可以在屬性值中添加換行符。但要避免attribute value normalisation過程中擠壓下來到空間,他們必須已經越獄:

<store name="Pizza R Us" Store_address="16 Main St&#10;Anytown, US&#10;00000"> 

使用正確的XML串行器將自動爲您做到這一點。如果你直接進入模板化XML,遺憾的是沒有一個htmlspecialchars標誌做這種逃避的,所以你不得不說:

<store 
    name="<?php echo htmlspecialchars($name); ?>" 
    Store_address="<?php echo str_replace("\n", "&#10;", htmlspecialchars($address)); ?>" 
> 

你可能更喜歡使用元素內容,而不是屬性值的存儲這樣的信息,例如:

<store> 
    <name><?php echo htmlspecialchars($name); ?></name> 
    <address><?php echo htmlspecialchars($address); ?></address> 
    <items> 
     ... 
    </items> 
</store> 

隨着元素內容中的換行符被保留。