如何告诉JAXB marshaller使用我的bean的package-info中提供的schemaLocation?

时间:2017-01-19 16:17:57

标签: java xml jaxb

我正在尝试让我的JAXB marshaller使用提供的schemaLocation 而不使用

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()

<div class="form-horizontal">
    <h4>Proposal</h4>
    <hr />
    @Html.ValidationSummary("", new { @class = "text-danger" })
    @Html.HiddenFor(model => model.id)

    <div class="form-group">
        @Html.LabelFor(model => model.item, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.item, new { htmlAttributes = new { @class = "form-control" } })
        </div>
    </div>

    <h2>Generated Questions</h2>
    <div id="ProposalTable"></div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Save" class="btn btn-default" />
        </div>
    </div>
</div>

<div class="form-group">
    <div class="col-md-offset-2 col-md-10">
        <input type="button" value="Generate" class="btn btn-default" id="GenerateBtn" />
    </div>
</div>
}

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")

<script>
    document.getElementById("GenerateBtn").onclick = function () { DisplayProposal() };
    function DisplayProposal() {
        //Loads Partial View to <div>ProposalTable</div>
        $('ProposalTable').load('@Url.Action("LoadStuff", "Proposals")');
    }

</script>

我看到有一个选项可以提供我的模式位置 包描述符

marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "some location");

但它不会在xml中打印

1 个答案:

答案 0 :(得分:0)

我认为你的主要问题是你的marshaller生成的XML错过了所需的名称空间。

您是否尝试过添加xmlns={@XmlNs(prefix="your_name_space", namespaceURI="http://my.website.com/TheClass")} 在包描述符中的XmlSchema注释中?

(建议来自:JAXB namespace prefixes missing