如何创建带前缀的 XmlElement 属性?

     2023-04-12     217

关键词:

【中文标题】如何创建带前缀的 XmlElement 属性?【英文标题】:How to create XmlElement attributes with prefix? 【发布时间】:2011-01-16 08:28:14 【问题描述】:

我需要能够在 xml 元素中定义带有前缀的属性。

比如……

<nc:Person s:id="ID_Person_01"></nc:Person>

为了做到这一点,我认为以下方法会起作用。

XmlElement TempElement = XmlDocToRef.CreateElement("nc:Person", "http://niem.gov/niem/niem-core/2.0");
TempElement.SetAttribute("s:id", "http://niem.gov/niem/structures/2.0", "ID_Person_01");

不幸的是,XmlElement.SetAttribute(string, string, string) 似乎不支持解析前缀,因为我收到以下错误。

“:”字符,十六进制值 0x3A,不能包含在名称中。

如何定义带前缀的属性?

【问题讨论】:

【参考方案1】:

如果您已经在根节点中声明了您的命名空间,您只需更改SetAttribute 调用以使用不带前缀的属性名称。因此,如果您的根节点定义了这样的命名空间:

<People xmlns:s='http://niem.gov/niem/structures/2.0'>

您可以这样做,该属性将获取您已经建立的前缀:

// no prefix on the first argument - it will be rendered as
// s:id='ID_Person_01'
TempElement.SetAttribute("id", "http://niem.gov/niem/structures/2.0", "ID_Person_01");

如果您还没有声明命名空间(及其前缀),三字符串 XmlDocument.CreateAttribute 重载将为您完成:

// Adds the declaration to your root node
var attribute = xmlDocToRef.CreateAttribute("s", "id", "http://niem.gov/niem/structures/2.0");
attribute.InnerText = "ID_Person_01"
TempElement.SetAttributeNode(attribute);

【讨论】:

这行得通。我已经在根节点中有命名空间。只需从 SetAttribute 方法的第一个参数中删除前缀。谢谢! 非常有帮助。一件小事 - 缺少一个等于/赋值运算符 XmlAttribute attribute = xmlDocToRef.【参考方案2】:

XMLDocument.CreateAttribute 方法可以采用 3 个字符串:指定的 Prefix、LocalName 和 NamespaceURI。然后,您可以将属性添加到元素。这样的事情可能对你有用:

XmlAttribute newAttribute = XmlDocToRef.CreateAttribute("s", "id", "http://niem.gov/niem/structures/2.0");
TempElement.Attributes.Append(newAttribute):

【讨论】:

【参考方案3】:

尝试直接创建属性并将其添加到元素中:

XmlAttribute attr = XmlDocToRef.CreateAttribute("s", "id", "http://niem.gov/niem/structures/2.0");
attr.InnerText = "ID_Person_01";
TempElement.Attributes.Append(attr);

【讨论】:

【参考方案4】:

由于我的搜索一直把我带到这里,我会回答这个XElement。我不知道这个解决方案是否也适用于XmlElement,但希望它至少可以帮助使用XElement 的其他人,他们最终会在这里。

基于this,我在某个模板中的所有数据节点中添加了xml:space="preserve",然后再查找并添加它们的内容。这是奇怪的代码 IMO(我更喜欢上面显示的三个参数,但它可以完成工作:

 foreach (XElement lElement in root.Descendants(myTag))
 
      lElement.Add(new XAttribute(root.GetNamespaceOfPrefix("xml") + "space", "preserve"));
 

【讨论】:

如何使用 JAXB 创建没有价值的 XmlElement

】如何使用JAXB创建没有价值的XmlElement【英文标题】:HowtocreateXmlElementwithnovaluewithJAXB【发布时间】:2019-08-0907:50:00【问题描述】:想要使用JAXB创建以下XML元素,没有值(内容),没有关闭元素名称,只是关闭\'/\':<ElementNameatt... 查看详情

使用 XElement 创建带前缀的 XML 元素

】使用XElement创建带前缀的XML元素【英文标题】:CreatinganXMLelementwithaprefixusingXElement【发布时间】:2012-10-2213:48:08【问题描述】:我有一个使用包含多个WPF自定义组件的画布的应用程序。我想将这些组件导出到一个XAML文件中,以... 查看详情

如何在运行时创建不带数据属性的剔除数据绑定

】如何在运行时创建不带数据属性的剔除数据绑定【英文标题】:Howtocreateknockoutdatabindingsatruntimew/odataattributes【发布时间】:2013-10-1313:06:38【问题描述】:是否可以仅从javascript创建敲除绑定,即无需编写自定义html属性?我非常... 查看详情

如何使用 NestJS 创建带参数的嵌套路由

】如何使用NestJS创建带参数的嵌套路由【英文标题】:HowtocreatenestedrouteswithparametersusingNestJS【发布时间】:2018-10-3012:40:36【问题描述】:我需要构建一个API,其中大多数路由都以一个公共URL部分为前缀,该部分也有一个参数。在... 查看详情

使用类前缀创建 CSS 规则 [重复]

...md-1的宽度小于col-md-2。但是,它们都有一些共同的属性。如何创建一个适用于共享相同前缀的多个类的规则?我想像这样:.col*margin:0,2%;.c 查看详情

使用 XMLRoot/XMLElement 和使用 Serializable() 属性之间的区别(在 c# 中)

】使用XMLRoot/XMLElement和使用Serializable()属性之间的区别(在c#中)【英文标题】:DifferencebetweenusingXMLRoot/XMLElementandusingSerializable()attributes(inc#)【发布时间】:2011-05-1300:27:25【问题描述】:使用XMLRoot/XMLElement和使用Serializable()属性有... 查看详情

如何使用 lxml 在属性值中设置命名空间前缀?

】如何使用lxml在属性值中设置命名空间前缀?【英文标题】:howtosetanamespaceprefixinanattributevalueusingthelxml?【发布时间】:2010-09-1014:24:05【问题描述】:我正在尝试使用lxml创建XML模式。一开始是这样的:<xs:schemaxmlns="http://www.goo.c... 查看详情

在序列化期间将组 c# 类属性分组到 XmlElement 属性中

】在序列化期间将组c#类属性分组到XmlElement属性中【英文标题】:Groupgroupc#classpropertiesintoXmlElementattributesduringserialization【发布时间】:2021-05-2908:01:12【问题描述】:在将c#类序列化为xml的过程中,我需要匹配某个xml结构,但最好... 查看详情

Lumen (5.8.12) - 带前缀的多个可选参数

...【发布时间】:2019-10-1415:14:43【问题描述】:我正在尝试创建这样的端点:/most-popular/language/language[/max/max[/page/page]]如果我创建两条单独的路线,它会完美运行:/most-popular/language 查看详情

如何在 Sequelize ORM 中获取不带前缀表名的连接数据结果

】如何在SequelizeORM中获取不带前缀表名的连接数据结果【英文标题】:HowtogetjoindataresultwithoutprefixtablenameinSequelizeORM【发布时间】:2018-10-1309:08:32【问题描述】:我在节点js中使用sequelizeORM。我加入两个表并获得结果,但结果以表... 查看详情

是否可以创建具有两个 xml 命名空间的 XmlElement?

】是否可以创建具有两个xml命名空间的XmlElement?【英文标题】:IsitpossibletocreateanXmlElementwithtwoxmlnamespaces?【发布时间】:2020-02-1008:33:07【问题描述】:我必须像下面这样生成XML:<foo:documentxmlns="http://www.example.com/xmlns"xmlns:foo="htt... 查看详情

如何获取 XmlElement 的字符位置?

】如何获取XmlElement的字符位置?【英文标题】:HowtogetthecharacterlocationofaXmlElement?【发布时间】:2011-09-1012:31:41【问题描述】:假设在我的C#代码中,我从XmlDocument(或XDocument强>)。如何在XML文件中获取此XmlElement的字符位置?... 查看详情

C#:如何从 XElement 中获取名称(带前缀)作为字符串?

】C#:如何从XElement中获取名称(带前缀)作为字符串?【英文标题】:C#:Howtogetthename(withprefix)fromXElementasstring?【发布时间】:2011-09-1706:43:30【问题描述】:这可能是重复的,因为我的问题似乎很琐碎,但我无法在***.com上找到答... 查看详情

创建带属性的xml文档

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Xml;namespace创建带属性的XML文档{classProgram{staticvoidMain(string[]args){XmlDocumentdoc= 查看详情

带前缀导入的标签库中没有定义标签

...39:30【问题描述】:我正在IntellijIDEA中使用JavaEE7,并尝试创建和使用自定义.tag文件。我已关注this的回答并在WEB-INF/tags中创建了一个wrapper.tag文件:<%@tagdescription="SimpleWrapp 查看详情

jaxb中注解@xmlelement中的属性required等于true或fasle都是起啥作用

jaxb中注解@XmlElement,用required属性来指定该元素是否必须出现,required为true时,表示@XMLElement注解下的变量为必传变量;required为false时,表示该变量为非必传变量。希望能够帮到你!参考技术AElement是Node的子集如:<Book>//node<... 查看详情

AngularJS中如何使用属性前缀“x-”和“data-”

】AngularJS中如何使用属性前缀“x-”和“data-”【英文标题】:Howaretheattributeprefixes"x-"and"data-"usedinAngularJS【发布时间】:2013-02-2118:40:27【问题描述】:我是Angular的新手,并试图理解“x-”和“data-”前缀的含义。在... 查看详情

如何删除 XmlElement ? (XmlNode 与 XmlElement)

】如何删除XmlElement?(XmlNode与XmlElement)【英文标题】:HowtoRemoveXmlElement?(XmlNodevsXmlElement)【发布时间】:2010-12-0608:26:30【问题描述】:我尝试在C#2.0中从我的Xml文件中删除一些XmlElements。我可以使用XmlNode.Remove()方法成功删除它。... 查看详情