1

我想构建一个应用程序来编辑复杂 xml 文档中的某些字段。(iso19139)。这个想法是在配置文件中识别应该使用 xpath 表达式编辑的字段,并自动生成相应的表单。

因此,应用程序将使用 xpath 从 xml 中提取字段的当前值,将其显示在表单中,并在提交表单时放入新值。

提取和写入值是通过创建、修改和写出 DOM 来完成的,但我想知道你们中是否有人有一个很好的建议,如何从 xpath 表达式列表中自动创建 webform 并将表单字段绑定到 xml 字段由 xpath 引用。

有一些工具可以为已知语法的 xml 文档生成 XForms,但它们不是解决方案,因为相应的语法太复杂了。

这是一个草图。我们有一个包含个人信息的 XML 文档,我们要在其中编辑街道地址和兄弟。配置文件中的 xpath 表达式标识应该可编辑的字段。

配置文件:(xml中的示例)

<config>
<field>
  <xp>/person/home/street/</xp>
<name>Address</name>
</field>
<field>
 <xp>/person/family/brother/</xp>
 <name>Family (brother)</name>
</field>
</config>

应用:

将生成一个带有地址和兄弟文本字段的网络表单。

谢谢库尔特

4

1 回答 1

0

这是 ASP.Net 中的一个简单版本...

该页面将具有以下控件。

<asp:PlaceHolder runat="server" ID="phContainer">  
</asp:PlaceHolder>
<asp:Button runat="server" Text="Save" ID="btnSave" onclick="btnSave_Click" />

这是构建表单然后将数据保存回 Xml 的代码

public partial class _Default : System.Web.UI.Page
{
    XElement xE;

    protected void Page_Load(object sender, EventArgs e)
    {

        xE = XElement.Parse(@"<Fields>
                                <Field1>Field 1 Data</Field1>
                                <Field2>Field 2 Data</Field2>
                                <Field3>Field 3 Data</Field3>
                            </Fields>");

        foreach (XElement xe in xE.Elements())
        {
            Label lbl = new Label();
            lbl.Text = xe.Name.ToString();
            lbl.Width = 150;
            phContainer.Controls.Add(lbl);

            TextBox tb = new TextBox();
            tb.ID = xe.Name.ToString();
            tb.Text = xe.Value;
            phContainer.Controls.Add(tb);

            phContainer.Controls.Add(new LiteralControl("<br />"));
        }


    }

    protected void btnSave_Click(object sender, EventArgs e)
    {
        foreach (Control c in phContainer.Controls)            
            if (c.GetType() == typeof(TextBox))
                xE.Element(((TextBox)c).ID).Value = ((TextBox)c).Text;


    }
}
于 2011-03-23T00:54:15.110 回答