我有一个xml文件,我想用php读取它,但我不知道如何解决它。我搜索过,找不到解决方案。
你想帮我吗?
file.xml:
<?xml version="1.0"?>
-<map name="mapname" description="just a map">
<line s="1" c="" a="100"/>
,
-<line s="6" c="" a="100">
<p x="121" y="212"/>
<p x="124" y="208"/>
<p x="128" y="204"/>
<p x="132" y="201"/>
<p x="133" y="199"/>
<p x="137" y="196"/>
<p x="140" y="192"/>
<p x="144" y="187"/>
<p x="148" y="182"/>
<p x="152" y="180"/>
<p x="156" y="175"/>
<p x="157" y="172"/>
<p x="160" y="170"/>
<p x="163" y="167"/>
<p x="165" y="165"/>
<p x="168" y="162"/>
<p x="170" y="160"/>
<p x="173" y="157"/>
<p x="181" y="159"/>
<p x="184" y="164"/>
<p x="184" y="169"/>
<p x="186" y="172"/>
<p x="188" y="177"/>
<p x="188" y="181"/>
<p x="188" y="187"/>
<p x="188" y="190"/>
<p x="188" y="195"/>
<p x="187" y="199"/>
<p x="187" y="205"/>
<p x="187" y="209"/>
<p x="187" y="215"/>
<p x="187" y="218"/>
<p x="187" y="222"/>
<p x="187" y="224"/>
<p x="187" y="225"/>
<p x="187" y="227"/>
<p x="187" y="228"/>
<p x="187" y="229"/>
<p x="187" y="230"/>
</line>
,
-<line s="6" c="" a="100">
<p x="133" y="203"/>
<p x="137" y="203"/>
<p x="143" y="203"/>
<p x="149" y="203"/>
<p x="157" y="203"/>
<p x="161" y="203"/>
<p x="165" y="203"/>
<p x="174" y="203"/>
<p x="177" y="203"/>
<p x="180" y="203"/>
<p x="183" y="203"/>
<p x="184" y="203"/>
<p x="185" y="203"/>
<p x="185" y="204"/>
</line>
</map>
我想使用循环读取s =“1”c =“”a =“100” 我想用循环
读X =“121”y =“212”我想要像
这样的东西$xml=simplexml_load_file('file.xml');
foreach($xml->line->attributes() as $a => $b) {
echo $a,'="',$b,"\"\n";
foreach($xml->p->attributes() as $c => $d) {
echo $c,'="',$d,"\"\n";
}
}
谢谢你, 麦克
解决方案归功于pthurmond,Josh和Paulsm4
<?php
$xml = simplexml_load_file("file.xml");
foreach ($xml->line AS $line) {
$attributes = $line->attributes();
$s = $attributes['s'];
echo $s;
foreach ($line->p AS $point) {
$attributes = $point->attributes();
$x = $attributes['x'];
$y = $attributes['y'];
echo "X: $x, Y: $y\n<br>\n";
}
}
?>
输出:
16X: 121, Y: 212
X: 124, Y: 208
X: 128, Y: 204
X: 132, Y: 201
X: 133, Y: 199
X: 137, Y: 196
X: 140, Y: 192
X: 144, Y: 187
X: 148, Y: 182
X: 152, Y: 180
X: 156, Y: 175
X: 157, Y: 172
X: 160, Y: 170
X: 163, Y: 167
X: 165, Y: 165
X: 168, Y: 162
X: 170, Y: 160
X: 173, Y: 157
X: 181, Y: 159
X: 184, Y: 164
X: 184, Y: 169
X: 186, Y: 172
X: 188, Y: 177
X: 188, Y: 181
X: 188, Y: 187
X: 188, Y: 190
X: 188, Y: 195
X: 187, Y: 199
X: 187, Y: 205
X: 187, Y: 209
X: 187, Y: 215
X: 187, Y: 218
X: 187, Y: 222
X: 187, Y: 224
X: 187, Y: 225
X: 187, Y: 227
X: 187, Y: 228
X: 187, Y: 229
X: 187, Y: 230
6X: 133, Y: 203
X: 137, Y: 203
X: 143, Y: 203
X: 149, Y: 203
X: 157, Y: 203
X: 161, Y: 203
X: 165, Y: 203
X: 174, Y: 203
X: 177, Y: 203
X: 180, Y: 203
X: 183, Y: 203
X: 184, Y: 203
X: 185, Y: 203
X: 185, Y: 204
6X: 218, Y: 202
X: 218, Y: 205
X: 218, Y: 208
X: 219, Y: 212
X: 220, Y: 214
X: 220, Y: 217
X: 220, Y: 219
X: 220, Y: 221
X: 220, Y: 222
X: 220, Y: 223
X: 220, Y: 224
X: 221, Y: 221
X: 223, Y: 214
X: 223, Y: 206
X: 223, Y: 201
X: 224, Y: 194
X: 225, Y: 191
X: 226, Y: 187
X: 228, Y: 182
X: 229, Y: 181
X: 230, Y: 179
X: 234, Y: 177
X: 236, Y: 176
X: 237, Y: 175
X: 238, Y: 175
X: 239, Y: 174
X: 241, Y: 174
X: 241, Y: 173
X: 242, Y: 173
X: 243, Y: 173
X: 244, Y: 176
X: 244, Y: 181
X: 245, Y: 187
X: 246, Y: 192
X: 246, Y: 200
X: 246, Y: 205
X: 246, Y: 212
X: 245, Y: 218
X: 245, Y: 221
X: 244, Y: 224
X: 244, Y: 226
X: 243, Y: 226
X: 243, Y: 227
X: 244, Y: 224
X: 249, Y: 216
X: 251, Y: 213
X: 254, Y: 207
X: 257, Y: 201
X: 260, Y: 197
X: 263, Y: 191
X: 265, Y: 188
X: 268, Y: 183
X: 268, Y: 182
X: 271, Y: 178
X: 275, Y: 175
X: 277, Y: 173
X: 279, Y: 171
X: 280, Y: 171
X: 281, Y: 170
X: 282, Y: 170
X: 282, Y: 169
X: 282, Y: 170
X: 284, Y: 172
X: 286, Y: 177
X: 287, Y: 180
X: 288, Y: 185
X: 289, Y: 190
X: 290, Y: 193
X: 290, Y: 196
X: 290, Y: 199
X: 290, Y: 202
X: 290, Y: 206
X: 290, Y: 209
X: 290, Y: 214
X: 290, Y: 217
X: 290, Y: 219
X: 289, Y: 220
X: 289, Y: 221
6X: 320, Y: 195
X: 319, Y: 195
X: 313, Y: 195
X: 310, Y: 195
X: 306, Y: 195
X: 303, Y: 196
X: 299, Y: 199
X: 296, Y: 200
X: 294, Y: 203
X: 292, Y: 207
X: 291, Y: 209
X: 290, Y: 212
X: 289, Y: 215
X: 289, Y: 216
X: 289, Y: 218
X: 290, Y: 219
X: 290, Y: 220
X: 290, Y: 221
X: 290, Y: 222
X: 292, Y: 222
X: 293, Y: 223
X: 295, Y: 224
X: 298, Y: 225
X: 301, Y: 225
X: 304, Y: 225
X: 307, Y: 225
X: 311, Y: 225
X: 314, Y: 225
X: 317, Y: 225
X: 320, Y: 224
X: 322, Y: 220
X: 324, Y: 219
X: 325, Y: 217
X: 326, Y: 212
X: 326, Y: 208
X: 326, Y: 205
X: 326, Y: 201
X: 326, Y: 198
X: 326, Y: 195
X: 326, Y: 193
X: 326, Y: 191
X: 326, Y: 190
X: 326, Y: 189
X: 326, Y: 188
X: 326, Y: 190
X: 326, Y: 194
X: 326, Y: 197
X: 326, Y: 200
X: 326, Y: 202
X: 326, Y: 205
X: 326, Y: 207
X: 326, Y: 210
X: 326, Y: 212
X: 327, Y: 213
X: 327, Y: 214
X: 327, Y: 215
X: 328, Y: 215
X: 329, Y: 215
X: 331, Y: 215
6X: 350, Y: 192
X: 351, Y: 194
X: 351, Y: 198
X: 352, Y: 201
X: 354, Y: 204
X: 357, Y: 208
X: 359, Y: 211
X: 362, Y: 215
X: 365, Y: 217
X: 367, Y: 219
X: 368, Y: 220
X: 369, Y: 221
X: 370, Y: 222
X: 371, Y: 222
X: 372, Y: 222
X: 373, Y: 222
X: 374, Y: 222
X: 377, Y: 222
X: 379, Y: 222
X: 382, Y: 221
X: 383, Y: 219
X: 386, Y: 218
X: 388, Y: 214
X: 389, Y: 212
X: 389, Y: 209
X: 389, Y: 206
X: 389, Y: 202
X: 389, Y: 198
X: 389, Y: 195
X: 388, Y: 192
X: 388, Y: 190
X: 388, Y: 189
X: 388, Y: 190
X: 388, Y: 192
X: 388, Y: 196
X: 388, Y: 199
X: 389, Y: 202
X: 390, Y: 206
X: 391, Y: 208
X: 391, Y: 212
X: 392, Y: 214
X: 392, Y: 216
X: 392, Y: 218
X: 393, Y: 220
X: 393, Y: 221
X: 393, Y: 222
X: 394, Y: 223
X: 394, Y: 224
X: 394, Y: 225
X: 395, Y: 225
6X: 405, Y: 196
X: 406, Y: 198
X: 407, Y: 203
X: 408, Y: 208
X: 408, Y: 212
X: 409, Y: 215
X: 409, Y: 218
X: 409.95, Y: 221
X: 410.95, Y: 224
X: 410.95, Y: 226
X: 410.95, Y: 225
X: 410.95, Y: 223
X: 410.95, Y: 219
X: 410.95, Y: 217
X: 411.95, Y: 212
X: 411.95, Y: 209
X: 412.95, Y: 206
X: 413.95, Y: 205
X: 414.95, Y: 202
X: 415.95, Y: 200
X: 417.95, Y: 199
X: 418.95, Y: 198
X: 419.95, Y: 197
X: 421.95, Y: 195
X: 423.95, Y: 194
X: 424.95, Y: 194
X: 426.95, Y: 194
X: 429.95, Y: 193
X: 430.95, Y: 193
X: 431.95, Y: 193
6X: 435.95, Y: 181
X: 435.95, Y: 183
X: 435.95, Y: 185
X: 436.95, Y: 190
X: 436.95, Y: 193
X: 438.95, Y: 197
X: 440.95, Y: 200
X: 442.95, Y: 205
X: 444.95, Y: 208
X: 447.95, Y: 212
X: 451.95, Y: 215
X: 452.95, Y: 216
X: 453.95, Y: 217
X: 455.95, Y: 218
X: 455.95, Y: 219
X: 456.95, Y: 219
X: 456.95, Y: 218
X: 458.95, Y: 218
X: 458.95, Y: 217
X: 459.95, Y: 216
X: 460.95, Y: 214
X: 464.95, Y: 212
X: 464.95, Y: 211
X: 466.95, Y: 209
6X: 466.95, Y: 201
X: 464.95, Y: 203
X: 462.95, Y: 205
X: 461.95, Y: 208
X: 459.95, Y: 210
X: 457.95, Y: 214
X: 455.95, Y: 217
X: 454.95, Y: 221
X: 452.95, Y: 223
X: 449.95, Y: 227
X: 448.95, Y: 229
X: 446.95, Y: 233
X: 445.95, Y: 236
X: 443.95, Y: 239
X: 439.95, Y: 244
X: 435.95, Y: 249
X: 434.95, Y: 252
X: 431.95, Y: 255
X: 427.95, Y: 258
X: 424.95, Y: 263
X: 423.95, Y: 265
X: 421.95, Y: 268
X: 420.95, Y: 271
X: 419.95, Y: 273
X: 417.95, Y: 275
X: 416.95, Y: 279
X: 414.95, Y: 280
X: 413.95, Y: 282
X: 411.95, Y: 285
X: 410.95, Y: 287
X: 408, Y: 289
X: 406, Y: 290
X: 405, Y: 292
X: 404, Y: 292
X: 403, Y: 293
X: 402, Y: 293
X: 401, Y: 294
X: 399, Y: 295
X: 398, Y: 295
X: 397, Y: 297
X: 395, Y: 298
X: 393, Y: 298
X: 392, Y: 299
X: 388, Y: 300
X: 386, Y: 302
X: 383, Y: 302
X: 382, Y: 303
X: 380, Y: 303
X: 378, Y: 303
X: 376, Y: 304
X: 374, Y: 304
X: 373, Y: 304
X: 370, Y: 304
X: 368, Y: 304
X: 367, Y: 304
X: 364, Y: 304
X: 362, Y: 304
X: 360, Y: 304
X: 359, Y: 303
X: 356, Y: 303
X: 353, Y: 302
X: 350, Y: 301
X: 348, Y: 299
X: 345, Y: 299
X: 340, Y: 297
X: 338, Y: 296
X: 336, Y: 295
X: 333, Y: 294
X: 330, Y: 293
X: 327, Y: 291
X: 326, Y: 291
X: 323, Y: 291
X: 321, Y: 290
X: 319, Y: 288
X: 316, Y: 288
X: 313, Y: 287
X: 310, Y: 287
X: 308, Y: 287
X: 305, Y: 287
X: 304, Y: 287
X: 302, Y: 286
X: 301, Y: 286
X: 299, Y: 285
X: 298, Y: 285
X: 296, Y: 285
X: 293, Y: 284
X: 292, Y: 284
X: 289, Y: 284
X: 284, Y: 284
X: 283, Y: 284
X: 280, Y: 284
X: 277, Y: 283
X: 275, Y: 282
X: 273, Y: 282
X: 272, Y: 282
X: 269, Y: 282
X: 268, Y: 282
X: 265, Y: 282
X: 264, Y: 282
X: 261, Y: 282
X: 259, Y: 282
X: 256, Y: 282
X: 253, Y: 282
X: 250, Y: 282
X: 245, Y: 282
X: 242, Y: 282
X: 240, Y: 282
X: 238, Y: 282
X: 236, Y: 282
X: 234, Y: 282
X: 232, Y: 283
X: 230, Y: 283
X: 229, Y: 283
X: 228, Y: 283
X: 227, Y: 283
X: 225, Y: 284
X: 224, Y: 284
X: 222, Y: 284
X: 220, Y: 284
X: 218, Y: 284
X: 216, Y: 285
X: 214, Y: 285
X: 211, Y: 285
X: 209, Y: 285
X: 207, Y: 285
X: 204, Y: 285
X: 203, Y: 285
X: 202, Y: 285
X: 201, Y: 286
X: 200, Y: 286
X: 200, Y: 287
X: 198, Y: 287
X: 197, Y: 287
X: 194, Y: 287
X: 192, Y: 287
X: 189, Y: 287
X: 186, Y: 287
X: 183, Y: 287
X: 181, Y: 287
X: 179, Y: 287
X: 176, Y: 287
X: 174, Y: 287
X: 173, Y: 287
X: 172, Y: 287
X: 171, Y: 287
X: 169, Y: 287
X: 166, Y: 287
X: 162, Y: 287
X: 159, Y: 287
X: 158, Y: 287
X: 156, Y: 287
X: 155, Y: 287
X: 154, Y: 287
66
正是我想要的:P
答案 0 :(得分:0)
有效的XML:
<?xml version="1.0"?> <map name="mapname" description="just a map"> <line s="1" c="" a="100"/> <line s="6" c="" a="100"/> <p x="121" y="212"/> <p x="124" y="208"/> <p x="128" y="204"/> ...
无效的XML:
<?xml version="1.0"?> -<map name="mapname" description="just a map"> <line s="1" c="" a="100"/> , -<line s="6" c="" a="100"> <p x="121" y="212"/> <p x="124" y="208"/> <p x="128" y="204"/>
就解释PHP而言(一旦你有了可以解析的有效输入),就可以完成本教程(其中之一):
http://www.w3schools.com/php/php_xml_simplexml.asp
这并不困难......但 IS 只是比“foreach($ xml-&gt; line-&gt; attributes()”更多的工作,因为$ a =&gt; $ b)“;)
答案 1 :(得分:0)
如果你有PHP5,你纠正了那个XML之后你就可以用SimpleXML把它作为一个对象加载。下面是示例代码,其中包括循环遍历它以获取所需的属性。
价:
http://us.php.net/manual/en/function.simplexml-load-string.php
http://php.net/manual/en/simplexmlelement.attributes.php
$xml = '<?xml version="1.0"?>
<map name="mapname" description="just a map">
<line s="1" c="" a="100"/>
<line s="6" c="" a="100">
<p x="121" y="212"/>
<p x="124" y="208"/>
<p x="128" y="204"/>
<p x="132" y="201"/>
<p x="133" y="199"/>
<p x="137" y="196"/>
<p x="140" y="192"/>
<p x="144" y="187"/>
<p x="148" y="182"/>
<p x="152" y="180"/>
<p x="156" y="175"/>
<p x="157" y="172"/>
<p x="160" y="170"/>
<p x="163" y="167"/>
<p x="165" y="165"/>
<p x="168" y="162"/>
<p x="170" y="160"/>
<p x="173" y="157"/>
<p x="181" y="159"/>
<p x="184" y="164"/>
<p x="184" y="169"/>
<p x="186" y="172"/>
<p x="188" y="177"/>
<p x="188" y="181"/>
<p x="188" y="187"/>
<p x="188" y="190"/>
<p x="188" y="195"/>
<p x="187" y="199"/>
<p x="187" y="205"/>
<p x="187" y="209"/>
<p x="187" y="215"/>
<p x="187" y="218"/>
<p x="187" y="222"/>
<p x="187" y="224"/>
<p x="187" y="225"/>
<p x="187" y="227"/>
<p x="187" y="228"/>
<p x="187" y="229"/>
<p x="187" y="230"/>
</line>
<line s="6" c="" a="100">
<p x="133" y="203"/>
<p x="137" y="203"/>
<p x="143" y="203"/>
<p x="149" y="203"/>
<p x="157" y="203"/>
<p x="161" y="203"/>
<p x="165" y="203"/>
<p x="174" y="203"/>
<p x="177" y="203"/>
<p x="180" y="203"/>
<p x="183" y="203"/>
<p x="184" y="203"/>
<p x="185" y="203"/>
<p x="185" y="204"/>
</line>
</map>
';
$xobj = simplexml_load_string($xml);
print_r($xobj);
foreach ($xobj->line AS $line) {
foreach ($line->p AS $point) {
$attributes = $point->attributes();
$x = $attributes['x'];
$y = $attributes['y'];
echo "X: $x, Y: $y\n<br>\n";
}
}