适当的XML语法

时间:2009-12-27 00:16:42

标签: xml

这是将地址存储在XML文件中的正确方法吗?如果是,我将如何在三行中回显它,就像应该使用PHP编写地址一样。如果不是正确的方法是什么? (文件不完整。我只对地址感兴趣。)

<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>

5 个答案:

答案 0 :(得分:2)

形状不完善的XML:“存储地址”属性名称中有空格。

XML数据通常是高度结构化的,因此,例如,让价格中的美元符号似乎有点奇怪。此外,地址是单个字符串,而不是分成组件。当然,由您决定如何构建数据,这取决于您的应用程序是什么。

如何显示数据完全取决于您使用的编程环境,您尚未告诉我们。

答案 1 :(得分:1)

响应存储地址:建议的方法是不将其存储为属性,但您可以。由于多种原因,最好将相关数据存储在标签中,而不是存储为属性。你这样做的方式使得为程序员拉出街道或城市变得更加困难。在不破坏现有代码的情况下,它也更难以阅读,维护并且不易变更。

有关更多详细信息,请阅读以下页面。特别是“我最喜欢的方式”和“避免XML属性?”部分

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

答案 2 :(得分:0)

价格是指配料还是整个披萨?如果它涉及整个披萨,为什么它嵌入顶部?

答案 3 :(得分:0)

不,它没有格式良好的XML - 属性名称中不能包含空格,所以:

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

应该是:

StoreAddress="16  Main St Anytown, US 00000"

答案 4 :(得分: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>

由于保留了元素内容中的换行符。