【发布时间】:2011-05-03 13:06:58
【问题描述】:
所以我尝试在以下 xml 上使用 F# XML parsing post(来自 uclassify API):
<?xml version="1.0" encoding="UTF-8" ?>
<uclassify xmlns="http://api.uclassify.com/1/ResponseSchema" version="1.01">
<status success="true" statusCode="2000"/>
<readCalls>
<classify id="cls1">
<classification textCoverage="1">
<class className="happy" p="0.912929"/>
<class className="upset" p="0.0870707"/>
</classification>
</classify>
</readCalls>
</uclassify>
代码是这样的:
let doc =
Xdocument.Load file
doc.Element(xn "uclassify")
.Element(xn "readCalls")
.Element(xn "classify")
.Element(xn "classification")
.Element(xn "class").Attribute(xn "p")
这不行!!!似乎它无法完成解析。然而删除属性xmlns="http://api.uclassify.com/1/ResponseSchema" version="1.01" 使其工作:
let doc =
Xdocument.Load file
let test = IO.File.ReadAllText(file).Replace("xmlns=\"http://api.uclassify.com/1/ResponseSchema\" version=\"1.01\"","")
XDocument.Parse(test)
doc.Element(xn "uclassify")
.Element(xn "readCalls")
.Element(xn "classify")
.Element(xn "classification")
.Element(xn "class").Attribute(xn "p")
注意这个问题似乎与Why must I remove xmlns attribute ... 有关。所以问题是为什么我必须删除 xmlns 属性?我应该使用什么来解析具有 xmlns 属性的 xml?
谢谢
【问题讨论】:
标签: xml f# xml-namespaces