You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2019调用ONVIF服务时OSDTextConfiguration的<any>元素使用问题

实现步骤

你可以按照以下方式构造自定义扩展元素,直接赋值给自动生成类的Any/AnyAttr属性即可,序列化时会自动嵌入到请求报文中:

using System.Xml;

// 1. 初始化XmlDocument用于构造XML节点
XmlDocument xmlDoc = new XmlDocument();

// 2. 构造自定义元素,示例为添加厂商自定义的字体大小配置
// 第二个参数为自定义命名空间,按对接设备的厂商要求填写即可,无特殊要求可留空
XmlElement customFontSizeEle = xmlDoc.CreateElement("CustomFontSize", "");
customFontSizeEle.InnerText = "36";

// 如需添加自定义属性,可按以下方式构造
XmlAttribute customDisplayAttr = xmlDoc.CreateAttribute("EnableCustomDisplay");
customDisplayAttr.Value = "1";

// 3. 实例化ONVIF扩展类,若你项目中生成的类名为OSDConfigurationExtension,直接替换类名即可
var osdTextExt = new OSDTextConfigurationExtension();
// 多个自定义元素直接追加到数组中即可
osdTextExt.Any = new XmlElement[] { customFontSizeEle };
// 自定义属性赋值到AnyAttr数组
osdTextExt.AnyAttr = new XmlAttribute[] { customDisplayAttr };

// 4. 关联到OSD配置对象
var osdTextConfig = new OSDTextConfiguration();
osdTextConfig.Extension = osdTextExt;

// 后续正常调用ONVIF对应的SetOSD等接口传入osdTextConfig即可

注意事项

  • 自定义元素和属性的命名、取值要符合你对接的ONVIF设备厂商的扩展规范,避免设备不识别
  • 支持同时添加多个自定义元素,直接把构造好的XmlElement对象放到Any数组中即可,序列化时会按顺序输出到Extension节点下
  • 该实现完全符合ONVIF的XSD扩展规则,不会出现序列化报错的问题

内容的提问来源于stack exchange,提问作者Vincentz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:45:03