【问题标题】:PHP XMLReader not loading some xml nodesPHP XMLReader 未加载某些 xml 节点
【发布时间】:2012-03-22 09:14:23
【问题描述】:

这是xml:

<Root xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<Truserv>

    <Item item_nbr="100024" srp_cost="11.99" member_cost="4.90" ds_cost="4.08" short_description="36&quot; Bent SB Axe Handle" vendor_id="74658" dpt_code="L " class_code="14" subclass_code="36" vendor_name="LINK HANDLE DIV OF SEYMOUR" upc="25545100091" long_description="36&quot;, Homeowner Bent Single Bit Axe Handle, For 3 To 5 LB Axes, Good Weight Hickory, Natural Wax Finish, 1 Wood Wedge Included, Hang Up Hook In Handle For Pegboard Display." weight="1.50" length="0.27" width="0.60" height="3.13" pack_weight="18.60" pack_length="3.20" pack_width="7.20" pack_height="37.50" retail_pack_qty="1" member_pack_qty="12" member_pack_type="B" member_break_pack="Y" model="100-09" item_picture_id="100024" country_code="US" to_be_discontinued="N" retail_uom="EA " Edit_Divisor="1" Exclusive_Brand_Code=""/>

    <Item item_nbr="100183" srp_cost="16.99" member_cost="10.61" ds_cost="10.64" short_de
scription="Lav Pop Up Assembly" vendor_id="5967" dpt_code="A " class_code="38" subclass_code="11" vendor_name="UNITED STATES HDW MFG/U S HA" upc="16356025802" long_description="1-1/4&quot;, Chrome Finish, Lavatory Pop Up Assembly, With Push Rod, No Overflow, ABS Plastic Top &amp; Body." weight="0.54" length="2.31" width="3.75" height="15.38" pack_weight="17.50" pack_length="21.75" pack_width="8.73" pack_height="17.13" retail_pack_qty="1" member_pack_qty="24" member_pack_type="B" member_break_pack="Y" model="P139C" item_picture_id="100183" country_code="US" to_be_discontinued="N" retail_uom="EA " Edit_Divisor="1" Exclusive_Brand_Code=""/>

</Truserv>

这是 PHP 代码:

echo "<pre>";
$reader = new XMLReader();
$reader->open('temp2.xml');
while (@$reader->read()) {
    echo $reader->getAttribute("item_nbr");
    echo "\n";
}
$reader->close();
echo "</pre>";

问题是,它只提供一些(很少)节点,并且由于某种原因它没有加载大部分节点。例如,以上面的 xml 文件为例,它只加载第一个节点(其中 item_nbr="100024"),而不是最后一个。

任何想法为什么会发生?

XML 文件很重,大小超过 500mb,这就是我使用 XMLReader 的原因。

谢谢!

【问题讨论】:

  • 要么添加解决方案作为答案并接受它,要么完全删除问题。谢谢。
  • @gordon 我试过了,但它说等待 8 小时。我会在 8 小时后修复它。

标签: php xml-parsing xmlreader


【解决方案1】:

好的,我自己找到了,问题在于换行符 \n 字符,由于它的大小,它使用 php fseek 从 xml 文档中获取一些行进入了我的 xml 文件。结果我收到了数据以及换行符,这些数据不允许 xmlreader 解析器进一步解析。

现在正确的 xml 文件是:

<Root xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<Truserv>

    <Item item_nbr="100024" srp_cost="11.99" member_cost="4.90" ds_cost="4.08" short_description="36&quot; Bent SB Axe Handle" vendor_id="74658" dpt_code="L " class_code="14" subclass_code="36" vendor_name="LINK HANDLE DIV OF SEYMOUR" upc="25545100091" long_description="36&quot;, Homeowner Bent Single Bit Axe Handle, For 3 To 5 LB Axes, Good Weight Hickory, Natural Wax Finish, 1 Wood Wedge Included, Hang Up Hook In Handle For Pegboard Display." weight="1.50" length="0.27" width="0.60" height="3.13" pack_weight="18.60" pack_length="3.20" pack_width="7.20" pack_height="37.50" retail_pack_qty="1" member_pack_qty="12" member_pack_type="B" member_break_pack="Y" model="100-09" item_picture_id="100024" country_code="US" to_be_discontinued="N" retail_uom="EA " Edit_Divisor="1" Exclusive_Brand_Code=""/>

    <Item item_nbr="100183" srp_cost="16.99" member_cost="10.61" ds_cost="10.64" short_description="Lav Pop Up Assembly" vendor_id="5967" dpt_code="A " class_code="38" subclass_code="11" vendor_name="UNITED STATES HDW MFG/U S HA" upc="16356025802" long_description="1-1/4&quot;, Chrome Finish, Lavatory Pop Up Assembly, With Push Rod, No Overflow, ABS Plastic Top &amp; Body." weight="0.54" length="2.31" width="3.75" height="15.38" pack_weight="17.50" pack_length="21.75" pack_width="8.73" pack_height="17.13" retail_pack_qty="1" member_pack_qty="24" member_pack_type="B" member_break_pack="Y" model="P139C" item_picture_id="100183" country_code="US" to_be_discontinued="N" retail_uom="EA " Edit_Divisor="1" Exclusive_Brand_Code=""/>

</Truserv>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多