我有一些XML:
<sentence id="1086415:2">
<text>$6 and there is much tasty food, all of it fresh and continually refilled.</text>
<Opinions>
<Opinion to="31" from="27" polarity="positive" category="FOOD#STYLE_OPTIONS" target="food"/>
<Opinion to="31" from="27" polarity="positive" category="FOOD#QUALITY" target="food"/>
<Opinion to="31" from="27" polarity="positive" category="FOOD#PRICES" target="food"/>
</Opinions>
</sentence>
<sentence id="1086415:3">
<text>I am not a vegetarian but, almost all the dishes were great.</text>
<Opinions>
<Opinion to="48" from="42" polarity="positive" category="FOOD#QUALITY" target="dishes"/>
</Opinions>
我试图提取Opinions标记中的所有内容,将其与元组中的文本结合起来。我想知道如何用minidom做到这一点?目前意见返回'\ n'。
from xml.dom import minidom
xmldoc = minidom.parse("ABSA16_Restaurants_Train_SB1_v2.xml")
sentences = xmldoc.getElementsByTagName("sentence")
for sentence in sentences:
text = sentence.getElementsByTagName("text")[0].firstChild.data
opinion = sentence.getElementsByTagName("Opinions")[0].firstChild.data
谢谢。
答案 0 :(得分:0)
您确定需要string Url = "WebAddress1";
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(Url);
foreach (var item in doc.DocumentNode.SelectNodes("//*[@id=\"pageContent\"]/ul[1]/li").Zip(doc.DocumentNode.SelectNodes("//*[@id=\"pageContent\"]/ul[1]/li/a"), (a, b) => new { A = a, B = b }))
{
var a = item.A;
var b = item.B;
ListBox1.Items.Add(a.InnerText);
ListBox2.Items.Add(b.GetAttributeValue("href", ""));
string Url2 = "WebAddress1" + b.GetAttributeValue("href", "");
HtmlWeb web2 = new HtmlWeb();
HtmlDocument doc2 = web2.Load(Url2);
foreach (var item2 in doc2.DocumentNode.SelectNodes("//*[@id=\"pageContent\"]/article/div[4]/div[1]").Zip(doc2.DocumentNode.SelectNodes("//*[@id=\"pageContent\"]/article/h1"), (c, d) => new { C = c, D = d }))
{
var c = item2.C;
var d = item2.D;
ListBox3.Items.Add(c.InnerText);
ListBox4.Items.Add(d.InnerText);
}
}
吗?
来自文档:
尚未熟悉DOM的用户应该考虑 使用xml.etree.ElementTree模块进行XML处理 代替。
如果没有充分的理由,不要浪费你的时间并使用标准的python minidom
,它有足够的例子来解决你的任务。如果遇到麻烦,请随时在评论中提问。
更重要的是,如果您需要经常使用XML,我建议使用第三方xml.etree.ElementTree
,它是功能更强大的工具,包含一些电池。