2012-03-12 79 views
0

我有一個XML文件,我想閱讀它使用PHP,但我不知道如何解決它。我搜索並找不到解決方案。如何閱讀這種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 = 「」 一個= 「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

有效的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->設備 - >屬性更多一點的工作s)()as $ a => $ b)「;)

+0

謝謝您的回答! :)我很高興與你們! – user1264914 2012-03-12 19:57:49

0

在更正XML之後,如果您有PHP5,則可以使用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"; 
    } 
} 
+0

或者,您可以使用simplexml_load_file()從文件或URL(較小的已知用途)加載它。 – pthurmond 2012-03-12 19:46:57

+0

非常感謝!它的工作原理:) – user1264914 2012-03-12 19:57:08

+0

不要忘了投票給我,並選擇一個贏家。 – pthurmond 2012-03-12 20:00:45