gpt4 book ai didi

c# - 将 Xml 元素添加到文档时出现命名空间问题

转载 作者:行者123 更新时间:2023-12-04 16:56:19 26 4
gpt4 key购买 nike

我正在尝试将 XML 元素添加到文档中,但我对命名空间感到很困惑。
有人可以指出我在下面做错了什么吗?

之前的xml:

...
<TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318">
<Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls"/>
</TaxKeywordTaxHTField>
...

之后需要 XML:
...
<TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318">
<Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls">
<TermInfo xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls">
<TermName>Kenya</TermName>
<TermId>283e7636-3eca-4a6c-8ea7-5c1b768b8f2b</TermId>
</TermInfo>
</Terms>
</TaxKeywordTaxHTField>
...

我的代码创建以下内容:
...
<TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318">
<Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls">
<TermInfo>
<TermName xmlns="">Kenya</TermName>
<TermId xmlns="">283e7636-3eca-4a6c-8ea7-5c1b768b8f2b</TermId>
</TermInfo>
</Terms>
</TaxKeywordTaxHTField>
...

这是我的代码:
var terms = DocumentManagment.Descendants(ns4 + "TaxKeywordTaxHTField")
.Descendants(ns2 + "Terms").SingleOrDefault();
terms.AddFirst(
new XElement(ns2 + "TermInfo",
new XElement("TermName", "Kenya"),
new XElement("TermId", "283e7636-3eca-4a6c-8ea7-5c1b768b8f2b")));

最佳答案

两者 TermNameTermId位于命名空间 "http://schemas.microsoft.com/office/infopath/2007/PartnerControls"所以只需将此命名空间添加到他们的名称中:

 terms.AddFirst(
new XElement(ns2 + "TermInfo",
new XElement(ns2 + "TermName", "Kenya"),
new XElement(ns2 + "TermId", "283e7636-3eca-4a6c-8ea7-5c1b768b8f2b")));

这将产生以下 xml:
<TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318">
<Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls">
<TermInfo>
<TermName>Kenya</TermName>
<TermId>283e7636-3eca-4a6c-8ea7-5c1b768b8f2b</TermId>
</TermInfo>
</Terms>
</TaxKeywordTaxHTField>

注意:因此 TermInfo在与其父元素相同的默认命名空间中,那么命名空间只是被继承并且没有显式声明。

还要记住,如果你没有为元素指定命名空间,那么它被认为是在 None 中。命名空间。但是如果父元素已经定义了默认命名空间,由子元素继承,那么这个空命名空间应该显式声明。这就是为什么你会看到 xmlns=""在你的输出中。

关于c# - 将 Xml 元素添加到文档时出现命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23336982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com