我有下面给出的XML。从这个XML,在一个带有ASCX控件的ASPX页面中,我想要一个带有选项“GMAT”,“GRE”,“LSAT”和“MCAT”的下拉列表。当我选择下面的GMAT时,它只会显示GMAT手册和其他手册一样。
你能为此提供一些代码吗?
<?xml version="1.0" encoding="utf-8"?>
<root>
<data>
<ImageId>tcm556662</ImageId>
<ImageURL>/Images/2008_gmat_brochure_uk_thumb_tcm55-7311.gif</ImageURL>
<ImageTitle>GMAT Brochure</ImageTitle>
<Description><p xmlns="http://www.w3.org/1999/xhtml">Classroom
and Online Coursegrams.</p></Description>
<FilePath>/Images/gmat_brochure_uk_tcm55-8064.pdf</FilePath>
</data>
<data>
<ImageId>tcm5510981</ImageId>
<ImageURL>/Images/practice-test-image_tcm55-10980.JPG</ImageURL>
<ImageTitle>GMAT Problem Solving Questions and Answers</ImageTitle>
<Description>Download Kaplan's GMAT Problem So to each question.</Description>
<FilePath>/Images/gmat-sample-questions_tcm55-10979.pdf</FilePath>
</data>
<data>
<ImageId>tcm5511066</ImageId>
<ImageURL>/Images/practice-test-image_tcm55-10980.JPG</ImageURL>
<ImageTitle>GMAT Sentence Correction Practice Questions</ImageTitle>
<Description><p xmlns="http://www.w3.org/1999/xhtml">Tick the box to
download GMsee how you might do on this section of the GMAT
exam.</p></Description>
<FilePath>/Images/gmat-sentence-correction_tcm55-11065.pdf</FilePath>
</data>
<data>
<ImageId>tcm556663</ImageId>
<ImageURL>/Images/gre_brochure_thumb_tcm55-7315.gif</ImageURL>
<ImageTitle>GRE Brochure</ImageTitle>
<Description><p xmlns="http://www.w3.org/1999/xhtml">Courses and
Tutoring for the Grprograms</p></Description>
<FilePath>/Images/gre-brochure_tcm55-8065.pdf</FilePath>
</data>
<data>
<ImageId>tcm5511219</ImageId>
<ImageURL>/Images/practice-test-image_tcm55-10980.JPG</ImageURL>
<ImageTitle>GRE Quantitative Questions Answers and Explanations</ImageTitle>
<Description>Download the answers and exp with the correct answer. Tick
the box and click download now to start the process.</Description>
<FilePath>/Images/gre-quantitative-practice-questions_tcm55-11214.pdf</FilePath>
</data>
<data>
<ImageId>tcm5511220</ImageId>
<ImageURL>/Images/practice-test-image_tcm55-10980.JPG</ImageURL>
<ImageTitle>GRE Sentence Completion Practice Question Answers and Explanations</ImageTitle>
<Description><p xmlns="http://www.w3.org/1999/xhtml">Complete the
sentence on the download now button to see how you did.</p></Description>
<FilePath>/Images/gre-sentence-completions_tcm55-11213.pdf</FilePath>
</data>
<data>
<ImageId>tcm558073</ImageId>
<ImageURL>/Images/lsat_brochure_thumb_tcm55-7316.gif</ImageURL>
<ImageTitle>LSAT Brochure</ImageTitle>
<Description>Courses and Tutoring for the Law School Admission US law schools</Description>
<FilePath>/Images/lsat-brochure_tcm55-8066.pdf</FilePath>
</data>
<data>
<ImageId>tcm5511275</ImageId>
<ImageURL>/Images/practice-test-image_tcm55-10980.JPG</ImageURL>
<ImageTitle>LSAT Comparative Reading Practice Questions Answers and Explanations</ImageTitle>
<Description>Try answering the LSAT Comparative Reading and click on
download now.</Description>
<FilePath>/Images/comparative-reasoning_tcm55-11269.pdf</FilePath>
</data>
<data>
<ImageId>tcm5511281</ImageId>
<ImageURL>/Images/practice-test-image_tcm55-10980.JPG</ImageURL>
<ImageTitle>LSAT Reading Comprehension Practice Questions Answers and Explanations</ImageTitle>
<Description><p xmlns="http://www.w3.org/1999/xhtml">Read the passage
and try the questions as now Lion Practice Questions Answers
and Explanations.</p></Description>
<FilePath>/Images/lsat-reading-comprehension_tcm55-11280.pdf</FilePath>
</data>
<data>
<ImageId>tcm558074</ImageId>
<ImageURL>/Images/mcat_brochure_thumb_tcm55-7317.gif</ImageURL>
<ImageTitle>MCAT Brochure</ImageTitle>
<Description>Courses and Tutoring for the Medical College Admission Test
(MCAT)</Description>
<FilePath>/Images/mcat-brochure_tcm55-8067.pdf</FilePath>
</data>
<data>
<ImageId>tcm5511278</ImageId>
<ImageURL>/Images/practice-test-image_tcm55-10980.JPG</ImageURL>
<ImageTitle>MCAT Biological Sciences Practice Questions Answers and Explanations</ImageTitle>
<Description>Have you wri download now to find out how you've done.</Description>
<FilePath>/Images/mcat-biological-sciences_tcm55-11271.pdf</FilePath>
</data>
</root>
以下是读取XML文件的函数:
private DataSet GenerateDatasetFromXml()
{
string xmlFile = string.Empty;
DataSet xmlFileData = new DataSet();
string selItem = string.Empty;
xmlFile = @Server.MapPath("~/" + ConfigurationManager.AppSettings["BrochureXml"].ToString());
string sfinalString = "";
hdnIds.Value = "";
try
{
if (File.Exists(xmlFile))
{
xmlFileData.ReadXml(xmlFile);
}
}
catch (Exception ex)
{
throw ex;
}
return xmlFileData;
}
答案 0 :(得分:1)
如果您有LINQ可用,您可以执行以下操作...我不确定ImageTitle元素是否是您的匹配元素但是......
XDocument xml = XDocument.Load("MyXMLFile.xml");
string selectedItem = "GMAT"; //Wherever you get this string from
var matchedItems = xml.Root.Descendants("data")
.Where(ele => ele.Element("ImageTitle").Value.StartsWith(selectedItem));
答案 1 :(得分:1)
我想要一个选项“GMAT”,“GRE”,“LSAT”,“MCAT”的下拉菜单
现在,您只能根据字符串解析ImageTitle并在其中查找子字符串来选择这些项目 - 不是最佳...
如果有任何机会,我建议您在数据中添加一个标记(或任何您想要的标记),如下所示:
<data>
<ImageId>tcm556662</ImageId>
<ImageURL>/Images/2008_gmat_brochure_uk_thumb_tcm55-7311.gif</ImageURL>
<ImageTitle>GMAT Brochure</ImageTitle>
<Type>GMAT</Type>
<Description><p xmlns="http://www.w3.org/1999/xhtml">Classroom and Online Coursegrams.</p></Description>
<FilePath>/Images/gmat_brochure_uk_tcm55-8064.pdf</FilePath>
</data>
这样,选择合适的元素就像一个非常简单的XPath表达式一样简单:
XmlNodeList _list = myXmlDocument.SelectNodes("//data[Type = 'GMAT']);
将数据文件加载到XmlDocument中后(或者如果您愿意,可以使用Linq-to-XML方式)。
马克
答案 2 :(得分:0)
查看您所拥有的XML结构,没有必要以最简单的方式格式化,以便能够开箱即用。
如果你能够改变结构,我会添加一个“”或类似的节点,甚至可能是元素的一个属性。在那里,您可以对每件商品进行分组,提供您想要的价值。
然后使用XML操作方法,您可以轻松地使用XPath从列表中选择项目,或创建可用项目列表。