1
私は、サーバーからXML文書を要求し、そのデータをシステムにインポートするために解析するプロジェクトを行っています。私はRuby 2.4.3を使用しています。無効なXMLを解析する方法
私の問題は、XMLが数字で始まる名前を持つ要素タグで来るということです。 Nokogiriはこれらのタグを以前のタグの内容の一部として表示し、残りの文書の解析を駄目にします。
私はMechanizeを使用してデータを要求しています。どのような道を行くのアイデア?
私が考えることができる唯一のことは、私がむしろやっていないMechanizeの完全なカスタムパーサーを書くことです。
また、これらの要素の名前を変更する文字列としてXMLを解析することも考えていましたが、それが最も簡単な方法かどうかはわかりませんでした。どんなアドバイスも大歓迎です。ここで
は私が
<Rooms>\r
<2ndBedroomArea>144</2ndBedroomArea>\r
<2ndKitchenArea>144</2ndKitchenArea>\r
<3rdBedroomArea>168</3rdBedroomArea>\r
<4thBedroomArea>156</4thBedroomArea>\r
<FamilyRoomArea>368</FamilyRoomArea>\r
<FormalDiningRoomArea>144</FormalDiningRoomArea>\r
<GreatRoomArea>0</GreatRoomArea>\r
<InformalDiningRoomArea>187</InformalDiningRoomArea>\r
<KitchenArea>168</KitchenArea>\r
<LaundryRoomArea>84</LaundryRoomArea>\r
<LivingRoomArea>272</LivingRoomArea>\r
<MasterBedroomArea>238</MasterBedroomArea>\r
<OfficeArea>144</OfficeArea>\r
<RecreationRoomArea>0</RecreationRoomArea>\r
<2ndBedroomDim>12 x 12</2ndBedroomDim>\r
<2ndKitchenDim>12 x 12</2ndKitchenDim>\r
<3rdBedroomDim>12 x 14</3rdBedroomDim>\r
<4thBedroomDim>13 x 12</4thBedroomDim>\r
<FamilyRoomDim>16 x 23</FamilyRoomDim>\r
<FormalDiningRoomDim>12 x 12</FormalDiningRoomDim>\r
<GreatRoomDim>0 x 0</GreatRoomDim>\r
<InformalDiningRoomDim>17 x 11</InformalDiningRoomDim>\r
<KitchenDim>14 x 12</KitchenDim>\r
<LaundryRoomDim>6 x 14</LaundryRoomDim>\r
<LivingRoomDim>17 x 16</LivingRoomDim>\r
<MasterBedroomDim>17 x 14</MasterBedroomDim>\r
<OfficeDim>12 x 12</OfficeDim>
<RecreationRoomDim>0 x 0</RecreationRoomDim>\r
<2ndBedroomLen>12</2ndBedroomLen>\r
<2ndKitchenLen>12</2ndKitchenLen>\r
<3rdBedroomLen>12</3rdBedroomLen>\r
<4thBedroomLen>13</4thBedroomLen>\r
<FamilyRoomLen>16</FamilyRoomLen>\r
<FormalDiningRoomLen>12</FormalDiningRoomLen>\r
<GreatRoomLen>0</GreatRoomLen>\r
<InformalDiningRoomLen>17</InformalDiningRoomLen>\r
<KitchenLen>14</KitchenLen>\r
<LaundryRoomLen>6</LaundryRoomLen>\r
<LivingRoomLen>17</LivingRoomLen>\r
<MasterBedroomLen>17</MasterBedroomLen>\r
<OfficeLen>12</OfficeLen>\r
<RecreationRoomLen>0</RecreationRoomLen>\r
<2ndBedroomWid>12</2ndBedroomWid>\r
<2ndKitchenWid>12</2ndKitchenWid>\r
<3rdBedroomWid>14</3rdBedroomWid>\r
<4thBedroomWid>12</4thBedroomWid>\r
<FamilyRoomWid>23</FamilyRoomWid>\r
<FormalDiningRoomWid>12</FormalDiningRoomWid>\r
<GreatRoomWid>0</GreatRoomWid>\r
<InformalDiningRoomWid>11</InformalDiningRoomWid>\r
<KitchenWid>12</KitchenWid>\r
<LaundryRoomWid>14</LaundryRoomWid>\r
<LivingRoomWid>16</LivingRoomWid>\r
<MasterBedroomWid>14</MasterBedroomWid>\r
<OfficeWid>12</OfficeWid>\r
<RecreationRoomWid>0</RecreationRoomWid>\r
<5thBedroomArea>0</5thBedroomArea>\r
<5thBedroomDim>0 x 0</5thBedroomDim>\r
<5thBedroomLen>0</5thBedroomLen>\r
<5thBedroomWid>0</5thBedroomWid>\r
<6thBedroomArea>0</6thBedroomArea>\r
<6thBedroomDim>0 x 0</6thBedroomDim>\r
<6thBedroomLen>0</6thBedroomLen>\r
<6thBedroomWid>0</6thBedroomWid>\r
</Rooms>\r
誰かがこれを後で見つけた場合は、この正規表現を使って修正しています:/ \ * \ <(\d).*\>。* \ <\/(\1).*>。* /これは私の予想できない無効なSQLパターンで動作します。キャプチャされた両方のグループの "Thi"のために "3"をサブするだけです。 – user1977840