Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中解析XML时出错_R_Xml - Fatal编程技术网

在R中解析XML时出错

在R中解析XML时出错,r,xml,R,Xml,我有一些XML数据,如下所示: <?xml version=1.0 encoding=UTF-8?> <tasks xml=xyz.com/abc/wkbh/task> <task> <taskxml> <Claim prDocumentIdentifier=137####_##62###> <ClaimNumber>13####_##62###</ClaimNumber> <FreeTextDescrip

我有一些XML数据,如下所示:

<?xml version=1.0 encoding=UTF-8?>
<tasks xml=xyz.com/abc/wkbh/task>
<task>
<taskxml>
<Claim prDocumentIdentifier=137####_##62###>
<ClaimNumber>13####_##62###</ClaimNumber>
<FreeTextDescription>INS PASSENGER IN UNINSURED AUTOMOBILE THAT VEERED OFF THE RD INTO A DITCH</FreeTextDescription>
<ClaimCauses>
<ClaimCause>
<ActualValue>THIRD PARTY STRUCK INSURED'S PARKED VEHICLE</ActualValue>
<Category>MOTOR_ACCIDENT_TP_HIT_FP</Category>
</ClaimCause>
</ClaimCauses>
<IncidentDate>2006-10-13</IncidentDate>
<IncidentTime>14:30:00.000</IncidentTime>
<ReportedDate>2008-01-28</ReportedDate>
<ReportedTime>13:14:00.000</ReportedTime>
<ClosureDate>2014-06-25</ClosureDate>
<PolicyHolderDrivingAnotherVehicleFlag>N</PolicyHolderDrivingAnotherVehicleFlag>
<UnusualCircumstancesFlag>N</UnusualCircumstancesFlag>
<LiableParties>
<ActualValue>DRIVER NOT AT FAULT</ActualValue>
</LiableParties>
<ClaimType>
<Category>PERSONAL_MOTOR</Category>
</ClaimType>
<ClaimStatus>
<ActualValue>OPEN</ActualValue>
<Category>OPEN</Category>
</ClaimStatus>
<CloseReason>
<ActualValue>PAID</ActualValue>
<Category>SETTLED</Category>
</CloseReason>
<ClaimReportedBy>
<ActualValue>OTHER</ActualValue>
</ClaimReportedBy>
<SupportingInformation>
<AuthoritiesNotifiedOrAtScene>N</AuthoritiesNotifiedOrAtScene>
<UnusualCircumstances>N</UnusualCircumstances>
</SupportingInformation>
<ClaimSites>
<ClaimSite>
<IsOccupiedFlag>Y</IsOccupiedFlag>
</ClaimSite>
</ClaimSites>
<MotorClaimVehicles>
<MotorClaimVehicle>
<ID>104####_137####</ID>
<MotorClaimVehicleRole>
<ActualValue>POLICY_HOLDER_VEHICLE</ActualValue>
<Category>POLICY_HOLDER_VEHICLE</Category>
</MotorClaimVehicleRole>
<Make>FORD</Make>
<ManufactureYear>2002</ManufactureYear>
<Model>FOCUS SE WAGON</Model>
<Status>
<Category>ACTIVE</Category>
</Status>
<TotalDistanceTravelled>
<Units>KM</Units>
<Amount>0</Amount>
</TotalDistanceTravelled>
<OwnershipStatus>
<ActualValue>OWNED</ActualValue>
<Category>OWNED</Category>
</OwnershipStatus>
</MotorClaimVehicle>
</MotorClaimVehicles>
</Claim>
</taskxml>
</task>
</tasks>
我不熟悉XML相关的软件包。因此,我们非常感谢您对这一错误的任何帮助

顺便说一下,这只是实际专栏的一小部分

编辑:XML是有效的XML,但它嵌入到一些文本格式的数据列中。当我尝试读取R中的文本数据并使用代码转换为数据帧时:

fpath <- "pathofdata.txt"
dat <- read.table(fpath, header = T, sep = "|", fill = T)

fpath您的XML无效

属性的值应该用引号括起来-这就是
1:String not start expected'或“
5:AttValue:”或“expected
的意思。如果将XML粘贴到任何在线XML验证器中,您都可以看到这一点

在这种情况下,第1行中未加引号的
version
encoding
属性会导致错误,但文档中还有两个示例-第2行的
xml
属性和第5行的
prDocumentIdentifier

另见:


发生这种情况的原因是源文件是一个以
|
作为分隔符的分隔文件,它使用
字符来划分字符串。但它也在这些字符串中使用
,而不转义它们,这将导致所看到的类型的解析错误,并创建无效的XML。您需要修复文件的输出或使用不同的传输格式。

您可以尝试此方法

库(xml2)
图书馆(dplyr)
xml_doc%
xml_text()
FreeTextDescription%
xml\u find\u all(“//tasks/task/taskxml/Claim/FreeTextDescription”)%>%
xml_text()

当你不知道自己在说什么时,df@amrrs不会传播误导性信息<代码>?xmlParse
:“解析包含XML/HTML内容的XML或HTML文件或字符串,…@hrbrmstr可能我不够清楚,请阅读它以字符串形式给出文件名的问题,这就是我的意思,以字符串形式格式化的XML当然可以!我认为这是显而易见的理解,我肯定知道我在说什么!其他人将不得不相信你的话。我已经删除了我的!Thx!@迈克·斯坦利-谢谢你的回复。我已经编辑了我的问题以包含其他信息。@Debbie好的,我现在明白了-您的问题不是XML无效,而是源文件无效。它不能使用“字符作为其字符串指示符,也可以在字符串中使用它作为未转换的字符串。无法正确解析。因此,|分隔值文件在当前状态下不可导入。@Prem-该文件为.txt,因为数据中只有两列包含XML内容。因此,xml_doc这不起作用,因为OP中给出的文件不是有效的xml文件-它仍然给出了一个
字符串not start expecting'或“[33]
error@MikeStanley我没有看到OP编辑的部分。但是为了运行我的代码,您只需要在XML的第2行和第5行中的名称空间值周围放置
。(顺便说一句,否决它的绅士应该解释这个动作)@Prem-数据片段是实际列中非常小的一部分,我有大约35k行数据。有没有一种自动放置引号的方法?也许在这种情况下regex会很方便-
xml\u变量
Error: 1: String not started expecting ' or "
2: Malformed declaration expecting version
3: Blank needed here
4: parsing XML declaration: '?>' expected
5: AttValue: " or ' expected
6: attributes construct error
7: Couldn't find end of Start Tag tasks line 1
8: Extra content at the end of the document
fpath <- "pathofdata.txt"
dat <- read.table(fpath, header = T, sep = "|", fill = T)
H|TASK_ID|TASK_REFERENCE|TASK_NAME|TASK_TYPE|TASK_RAISED_TS|TASK_STATE|TASK_VIEWED_FLAG|TASK_OUTCOME|CURRENT_QUEUE|QUEUE_CHANGE_TS|**TASK_XML_DATA**|**SCORE_XML_DATA**|
|"12"|"137####_##62###"|"137####_##62###"|"Claim"|"14APR2015:23:36:04"|"AwaitingTriageEast"|"N"|" "|"4"|"."|"<?xml version="1.0" encoding="UTF-8"?><tasks xmlns="xyz.com/abc/wkbh/task">
      ClaimNumber                                                       FreeTextDescription
1 1376025_##62### INS PASSENGER IN UNINSURED AUTOMOBILE THAT VEERED OFF THE RD INTO A DITCH