Ric*_*ddy 3 c# linq xelement namespaces
我正在使用Linq to XML和C#创建XML.这一切都很有效,除非我需要在XML中手动添加一行.只有当我有一个值传递给它时才会添加此行,否则我只是忽略整个标记.
我使用XElement.Load加载我存储在字符串中的文本字符串,但是当我将它附加到XML时,它总是在我的标记的末尾放入xmlns ="".
有没有办法告诉XElement.Load使用现有的命名空间,或者在将字符串放入XML时忽略它?
理想情况下,我只希望将我的字符串包含在正在创建的XML中,而不添加额外的标记.
以下是我目前所做的一个示例:
string XMLDetails = null;
if (ValuePassedThrough != null)
XMLDetails = "<MyNewTag Code=\"14\" Value=\"" + ValuePassedThrough +"\"></MyNewTag>";
Run Code Online (Sandbox Code Playgroud)
当我构建XML时,我将上面的字符串加载到我的XML中.在这里,xmlns =""被添加到XMLDetails值,但理想情况下我希望忽略它,因为它在尝试读取此标记时导致收件人出现问题.
XNamespace ns = "http://namespace-address";
XNamespace xsi = "http://XMLSchema-instance-address";
XDocument RequestDoc = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement(ns + "HeaderTag",
new XAttribute("xmlns", ns),
new XAttribute(XNamespace.Xmlns + "xsi", xsi),
new XAttribute(xsi + "schemaLocation", "http://www.addressofschema.xsd"),
new XAttribute("Version", "1"),
new XElement(ns + "OpeningTAG",
Run Code Online (Sandbox Code Playgroud)
...我的XML代码......
XElement.Load(new StringReader(XMLDetails))
Run Code Online (Sandbox Code Playgroud)
... XML代码结束......
正如刚才提到的.我的代码有效,它为我成功输出XML.它只是我使用XElement.Load加载的MyNewTag标记将xmlns =""添加到它的末尾,这导致了我的问题.
有什么想法我可以解决这个问题吗?谢谢你的帮助.
此致,Rich
怎么样:
XElement withoutNamespace = XElement.Load(new StringReader(XMLDetails));
XElement withNamespace = new XElement(ns + withoutNamespace.Name.LocalName,
withoutNamespace.Nodes());
Run Code Online (Sandbox Code Playgroud)
作为一个更好的选择 - 为什么不在构建XML时包含命名空间,或者甚至更好,创建一个XElement而不是手动生成一个XML字符串然后读取.手动创建XML很少是一个好主意.除了其他任何东西,你假设ValuePassedThrough已经逃脱,或者不需要逃避等等.这可能是有效的 - 但它至少是一个令人担忧的原因.
| 归档时间: |
|
| 查看次数: |
10188 次 |
| 最近记录: |