【问题标题】:How do I add asp tags using xmldocument?如何使用 xmldocument 添加 asp 标签?
【发布时间】:2011-08-16 16:27:58
【问题描述】:
<asp:TableCell>
      <asp:Localize ID="lblPlntnextOneCtrlRes" meta:resourcekey="lblPlntnextOneCtrlRes" runat="server" />
      <asp:Button ID="cmdPlntAcceptnextOneCtrlRes" meta:resourcekey="cmdPlntAcceptnextOneCtrlRes" OnClick="cmdQualAccept_Click" runat="server" Text="Accept" Visible="True" />
    </asp:TableCell>
  </asp:TableRow>
</asp:Table>

我想使用 xmldocument 获得这种输出,但我不断收到 asp: 和 meta: 的命名空间错误:

目前,当我生成标记时,我最终得到了这个(但想让它看起来像上面那样):

<TableCell>
      <Localize ID="lblPlntnextOneCtrlRes" resourcekey="lblPlntnextOneCtrlRes" runat="server" />
      <Button ID="cmdPlntAcceptnextOneCtrlRes" resourcekey="cmdPlntAcceptnextOneCtrlRes" OnClick="cmdQualAccept_Click" runat="server" Text="Accept" Visible="True" />
    </TableCell>
  </TableRow>
</Table>

这是我用来创建标记的一些代码:

Dim markupRoot As XmlElement = markup.DocumentElement

Dim rowElement As XmlElement = markup.CreateElement("TableRow")
Dim cellElement As XmlElement = markup.CreateElement("TableCell")
Dim contentElement As XmlElement = markup.CreateElement("Localize")
contentElement.SetAttribute("ID", "tag" & ctrlName & "DescRes")
contentElement.SetAttribute("resourcekey", "tag" & ctrlName & "DescRes")
contentElement.SetAttribute("runat", "server")

cellElement.AppendChild(contentElement)
rowElement.AppendChild(cellElement)

cellElement = markup.CreateElement("TableCell")
contentElement = markup.CreateElement("Localize")
contentElement.SetAttribute("ID", "tag" & ctrlName & "NoteRes")
contentElement.SetAttribute("resourcekey", "tag" & ctrlName & "NoteRes")
contentElement.SetAttribute("runat", "server")

cellElement.AppendChild(contentElement)
rowElement.AppendChild(cellElement)

【问题讨论】:

  • 记不起语法,但你不只需要添加一个 'asp' 的命名空间吗?我认为创建元素的过载...
  • 我没有找到任何可以添加命名空间的东西。

标签: asp.net visual-studio-2008 asp.net-3.5 xmldocument


【解决方案1】:

试试:

cellElement = markup.CreateElement("asp:TableCell","asp")

【讨论】:

  • 我是否需要向实际的 xml 文档本身添加任何内容以使代码不会产生错误?
  • 可能将此添加到您的顶级元素或 markup.documentElement: Element.SetAttribute ("xmlns:asp", "asp.net/XMLSchema") 您当然需要获取正确的架构 URL .
  • 我发现了这个:w3schools.com/xml/xml_namespaces.asp 似乎和你发布的一样。谢谢,拉斯。
【解决方案2】:

我发现设置默认命名空间的方法如下:

生成的 xml(注意:根节点中的命名空间是手动添加的)-

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns:asp="http://admin.test.com/asp" xmlns:meta="http://admin.test.com/meta" xmlns:cc1="http://admin.test.com/cc1">
<cc1:TabContainer ID="wfwContainer" runat="server" AutoPostBack="True" ActiveTabIndex="0">
    <cc1:TabPanel ID="wfwTab" runat="server" HeaderText="">
      <HeaderTemplate>
        <asp:Localize ID="tagwfwRes" meta:resourcekey="tagwfwRes" runat="server" />
      </HeaderTemplate>
      <ContentTemplate />
    </cc1:TabPanel>
  </cc1:TabContainer>
</Root>

生成 xml 的代码 -

Protected Sub createMarkupForTabs()

    Dim markup As XmlDocument = New XmlDocument()
    Dim truePath As String = Server.MapPath("Test.xml")

    markup.Load(truePath)

    Dim markupRoot As XmlElement = markup.DocumentElement

    Dim tabContainerElement As XmlElement = markup.CreateElement("cc1", "TabContainer", "http://admin.test.com/cc1")
    Dim tabElement As XmlElement = markup.CreateElement("cc1", "TabPanel", "http://admin.test.com/cc1")

    Dim headTempElement As XmlElement = markup.CreateElement("HeaderTemplate")
    Dim headerContentElement As XmlElement = markup.CreateElement("asp", "Localize", "http://admin.test.com/asp")
    Dim contentTempElement As XmlElement = markup.CreateElement("ContentTemplate")

    headerContentElement.SetAttribute("ID", "tag" & mainTabName.Text & "" & "Res")
    headerContentElement.SetAttribute("resourcekey", "http://admin.test.com/meta", "tag" & mainTabName.Text & "" & "Res")
    headerContentElement.SetAttribute("runat", "server")

    headTempElement.AppendChild(headerContentElement)

    tabElement.SetAttribute("ID", mainTabName.Text & "" & "Tab")
    tabElement.SetAttribute("runat", "server")
    tabElement.SetAttribute("HeaderText", "")

    tabElement.AppendChild(headTempElement)
    tabElement.AppendChild(contentTempElement)

    tabContainerElement.SetAttribute("ID", mainTabName.Text & "Container")
    tabContainerElement.SetAttribute("runat", "server")
    tabContainerElement.SetAttribute("AutoPostBack", "True")
    tabContainerElement.SetAttribute("ActiveTabIndex", "0")

    tabContainerElement.AppendChild(tabElement)

    markupRoot.AppendChild(tabContainerElement)

    markup.Save(truePath)
End Sub

【讨论】:

    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 2023-03-23
    • 2010-09-24
    • 2020-02-20
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多