1

我是 xml 新手,有点困惑。

我有下一个 xml

<Data>
    <seo>
        <Title>
            <ID>Site_Title</ID>
            <name>A Media</name>
        </Title>

        <Keywords>
            <ID>Keywords</ID>
            <name>A, Media, keywords</name>
        </Keywords>

        <Site_Description>
            <ID>Site_Description</ID>
            <name>A Media site description</name>
        </Site_Description>
    </seo>

    <main_slider>
        <slider1>
            <id></id>
            <image_url></image_url>
            <text></text>
            <btn_text></btn_text>
            <btn_link></btn_link>
        </slider1>

        <slider2>
            <id></id>
            <image_url></image_url>
            <text></text>
            <btn_text></btn_text>
            <btn_link></btn_link>
        </slider2>

        <slider3>
            <id></id>
            <image_url></image_url>
            <text></text>
            <btn_text></btn_text>
            <btn_link></btn_link>
        </slider3>

        <slider4>
            <id></id>
            <image_url></image_url>
            <text></text>
            <btn_text></btn_text>
            <btn_link></btn_link>
        </slider4>

        <slider5>
            <id></id>
            <image_url></image_url>
            <text></text>
            <btn_text></btn_text>
            <btn_link></btn_link>
        </slider5>

    </main_slider>

</Data>

母版页.cs

   XmlDocument doc = new XmlDocument();

   doc.Load(Path.Combine(Request.PhysicalApplicationPath, "App_Data/A_data.xml"));

好的,从这里我可以继续吗?假设我有下一个代码:

    Page.Title = title_str; // Title set
    Page.MetaDescription = description; // Description set
    Page.MetaKeywords = keywords; // Keywords set

我如何从 xml 获取标题 > 名称节点?和关键字>名称等...

它必须只能通过“foreach”完成?无论如何,如何?

4

2 回答 2

2

使用 Linq 转 XML:

var path = Path.Combine(Request.PhysicalApplicationPath, "App_Data/A_data.xml");
XDocument xdoc = XDocument.Load(path);
var seo = xdoc.Root.Element("seo");
Page.Title = (string)seo.Element("Title").Element("name");
Page.MetaDescription = (string)seo.Element("Site_Description").Element("name");
Page.MetaKeywords = (string)seo.Element("Keywords").Element("name");
// etc

此外,我建议您查看LINQ to XML Samples以了解将来如何使用它。

您还可以使用 xpath (如果某些元素可能丢失,这是更好的选择):

Page.Title = (string)xdoc.XPathSelectElement("Data/seo/Title/name");
于 2013-10-25T13:22:23.330 回答
1

就像是:

doc.Root.Element("seo").Element("Title").Element("name").Value;
doc.Root.Element("seo").Element("Keywords").Element("name").Value;
doc.Root.Element("seo").Element("Site_Description").Element("name").Value;

如果你想对滑块进行交互,最好使用 foreach,但是当你要求 seo 值时,它只在 xml 中出现一次,最好直接选择节点和值

于 2013-10-25T13:24:22.310 回答