这是将地址存储在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>
答案 0 :(得分:2)
形状不完善的XML:“存储地址”属性名称中有空格。
XML数据通常是高度结构化的,因此,例如,让价格中的美元符号似乎有点奇怪。此外,地址是单个字符串,而不是分成组件。当然,由您决定如何构建数据,这取决于您的应用程序是什么。
如何显示数据完全取决于您使用的编程环境,您尚未告诉我们。
答案 1 :(得分:1)
响应存储地址:建议的方法是不将其存储为属性,但您可以。由于多种原因,最好将相关数据存储在标签中,而不是存储为属性。你这样做的方式使得为程序员拉出街道或城市变得更加困难。在不破坏现有代码的情况下,它也更难以阅读,维护并且不易变更。
有关更多详细信息,请阅读以下页面。特别是“我最喜欢的方式”和“避免XML属性?”部分
答案 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 Anytown, US 00000">
使用正确的XML序列化程序会自动为您执行此操作。如果你直接模仿XML,不幸的是没有htmlspecialchars
标志来做这种转义,所以你不得不说:
<store
name="<?php echo htmlspecialchars($name); ?>"
Store_address="<?php echo str_replace("\n", " ", htmlspecialchars($address)); ?>"
>
您可能更喜欢使用元素内容而不是属性值来存储这样的信息,例如:
<store>
<name><?php echo htmlspecialchars($name); ?></name>
<address><?php echo htmlspecialchars($address); ?></address>
<items>
...
</items>
</store>
由于保留了元素内容中的换行符。