道歉,如果你已經知道這一些,但你說你是新來的XML。
您將首先需要清理標記,因爲它不是嚴格XML。
例如標籤
<w:rStyle w:val="HyperLink"/>
不具有定義的命名空間(W)
另外
....
<URL>
<w:rStyle w:val="HyperLink"/>
<w:t>https://www.ogdennash.com/</w:t>
</w:r>
....
不是好的MED welformed XML
應該
....
<URL>
<w:r>
<w:rStyle w:val="HyperLink"/>
<w:t>https://www.ogdennash.com/</w:t>
</w:r>
</URL>
....
如果您的文檔welformed並添加namespace,(我必然w ^到http://foo.bar)所以你的xml看起來像這樣
<POEM xmlns:w="http://foo.bar">
<AUTHOR>Ogden Nash</AUTHOR>
<TITLE>Fleas</TITLE>
<LINE>Adam</LINE>
<LINE>Had 'em.</LINE>
<URL>
<w:r>
<w:rStyle w:val="HyperLink"/>
<w:t>https://www.ogdennash.com/</w:t>
</w:r>
</URL>
</POEM>
然後你可以用下面的XPath表達式
//寬:T /文()
選擇一個標籤內的所有超鏈接。然而,如果你想獲得URL標籤中的所有鏈接,你需要從URL獲得文本 - > w:r - > w:t - XPath是這樣的
// URL/w:r /女:T /文()
如果讓我用Java寫這個我會使用
JTIDY解決您的標記第一
一旦其固定的我會用JDOM(XML解析器)和Jaxen(XPath庫)來創建文本文件。
我可能可以爲您提供一個樣本類來做到這一點。
這不是一個真正的容易方式做到這一點,但它會工作。我希望它能給你一些指示。
您使用哪種語言/平臺進行分析?什麼庫? – Oded 2011-06-15 15:02:08
還沒有決定。這就是我要求提出的建議。解析本身可能不會很困難,但是有沒有特定的庫(樹解析或線性解析?),這會使這更容易?我現在只是搞清楚DOM,SAX等。我完全不熟悉XML,所以很抱歉,如果這些都是愚蠢的問題。 至於語言,我想說Java,但它也很靈活。我可以用C做,但這可能會很難看。 Python會使這更容易嗎? 我不需要就可能的方法提供一些建議。 – 2011-06-15 23:55:55
任何語言的任何XML庫都可以。任何XML解析器都將支持XPath,並允許您從XML中提取信息。 – Oded 2011-06-16 07:45:08