在 C# 中,有没有办法使用短前缀而不是每个节点的完整命名空间来生成 XDocument?

2024-03-26

我只是想让我的 XML 更整洁、更简洁。我知道在 C# 中可以做这样的事情:

XNamespace ds = "http://schemas.microsoft.com/ado/2007/08/dataservices";
new XElement(ds + "MyDumbElementName", "SomethingStupid");

并获得与此类似的 XML:

<root>
    <MyDumbElementName xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices">
        SomethingStupid
    </MyDumbElementName>
</root>

而不是这样的:

<root xmlns:ds="http://schemas.microsoft.com/ado/2007/08/dataservices">
    <ds:MyDumbElementName>
        SomethingStupid
    </ds:MyDumbElementName>
</root>

显然,第二个版本更漂亮、更易于阅读且紧凑。有没有办法生成相当于紧凑版本的 XDocument,而不调用 Parse("...")?

你可能决定冒险并回答“不”,在这种情况下,我相信公平的做法是等待其他人回答,如果没有人给出像样的答案,我会接受你的“不”,否则如果有人确实提供了答案,我会记下“否”。我希望这对你来说也很公平。

编辑:也许我应该更具体一点,并说我希望能够使用多个名称空间,而不仅仅是一个。


您可以通过指定 xmlns 属性显式覆盖此行为:

XNamespace ns = "urn:test";

new XDocument (
    new XElement ("root",
        new XAttribute (XNamespace.Xmlns + "ds", ns),
        new XElement (ns + "foo",
            new XAttribute ("xmlns", ns),
            new XElement (ns + "bar", "content")
        ))
).Dump ();

<root xmlns:ds="urn:test">
  <foo xmlns="urn:test">
    <bar>content</bar>
  </foo>
</root> 

默认情况下,行为是内嵌指定 xmlns。

XNamespace ns = "urn:test";

new XDocument (
    new XElement ("root",
        new XElement (ns + "foo",
            new XElement (ns + "bar", "content")
        ))
).Dump ();

给出输出:

<root>
  <foo xmlns="urn:test">
    <bar>content</bar>
  </foo>
</root>

因此,默认行为是您想要的行为,除非已经定义了命名空间:

XNamespace ns = "urn:test";

new XDocument (
    new XElement ("root",
        new XAttribute (XNamespace.Xmlns + "ds", ns),
        new XElement (ns + "foo",
            new XElement (ns + "bar", "content")
        ))
).Dump ();

<root xmlns:ds="urn:test">
  <ds:foo>
    <ds:bar>content</ds:bar>
  </ds:foo>
</root> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中,有没有办法使用短前缀而不是每个节点的完整命名空间来生成 XDocument? 的相关文章

  • 将数组从 C# 编组到 C++ 并返回:PInvokeStackImbalance

    我有一个 C 函数 我想从 C 访问它 问题是我不断收到 PInvokeStackImbalance 异常 但我不知道为什么 当检查异常被关闭时 一切都运行良好并且符合预期 我的 C 函数的签名是 extern C double solve
  • 如何使用Task.WhenAny并实现重试

    我有一个创建多个基于 I O 的任务的解决方案 我正在使用Task WhenAny 来管理这些任务 但通常许多任务会由于网络问题或请求限制等原因而失败 我似乎找不到一个解决方案 使我能够在使用时成功重试失败的任务Task WhenAny 方
  • WPF MVVM将DataTable绑定到DataGrid不显示数据

    我有一个简单的控件 其中包含一个 DataGrid 其中 ItemsSource 绑定到 DataTable 当我填充 DataTable 时 我可以看到 DataGrid 中添加了行 但没有显示任何数据 我没有为此 DataGrid 使用
  • Reflection.Emit 中的短格式操作码错误

    我正在制作一种与以下非常相似的小语言hlsl但仅支持像素着色器 该语言使用reflection emit构建实现相同功能的 NET 程序集 我目前正在测试分支指令的实现if在我的一个单元测试中 一个大的if与内if elses 失败并显示以
  • ApiController 操作无法从查询字符串解析数组

    使用 Visual Studio 2012 2 MVC4 Web 应用程序 我有请求发送到我的 ApiController 如下所示 http localhost api keys ids 1 ids 2 ids 3 我的印象是以下方法应该
  • 无法使用 ASP.NET Core 从 JWT 令牌获取声明

    我正在尝试使用 ASP NET Core 实现 JWT 持有者身份验证的非常简单的实现 我从控制器返回的响应有点像这样 var identity new ClaimsIdentity identity AddClaim new Claim
  • 将 try_emplace 与 shared_ptr 一起使用

    所以我有一个std unordered map
  • 是否可以用 C# 为 Android 编写应用程序?

    我们都知道Android运行Dalvik VM程序 通常开发人员用 Java 编写程序并将其编译为 Dalvik 字节码 我想知道是否有可能创建一个可以接受 C 代码并将其编译为 Dalvik 字节码的编译器 嗯 这是一种选择 或者您可以在
  • NHibernate 中具有不同类型答案的问题

    我正在尝试找到一个问卷问题的简洁解决方案 假设我有一个Questionnaire类有一个集合Answers e g public class Questionnaire public virtual ISet
  • Parallel.For 和 Break() 误解?

    我正在研究 For 循环中的并行性中断 看完之后this http tipsandtricks runicsoft com CSharp ParallelClass html and this http reedcopsey com 201
  • 读取所有进程内存以查找字符串变量c#的地址

    我有 2 个用 C 编写的程序 第一个名为 ScanMe 的程序包含一个包含值 FINDMEEEEEEE 的字符串变量 以及一个值为 1546 22915487 的双精度变量 另一个名为 MemoryScan 的程序读取第一个程序的所有内存
  • 在 C# 中加密并在 Flex 中解密

    我需要解密 Flex 中的一些数据 这些数据是用 C 加密并写入文件的 为了简单起见 我选择使用 as3crypto As3 库和 Bruce Schneier C 库 AS3 as3加密链接 http code google com p
  • 如何带参数调用外部程序?

    我想在我的代码中调用一个 Windows 程序 并使用代码本身确定的参数 我不想调用外部函数或方法 而是调用 WinXP 环境中的实际 exe 或批处理 脚本文件 C 或 C 将是首选语言 但如果使用任何其他语言更容易完成此操作 请告诉我
  • 我可以在C中直接比较int和size_t吗?

    我可以比较一个int and a size t像这样的变量 int i 1 size t y 2 if i y Do something 或者我必须输入其中之一 只要满足以下条件 它就是安全的int为零或正数 如果它是负数 并且size t
  • 为什么 OOP 中静态类的最佳实践有所不同?

    我目前正在阅读有关 Java 最佳实践的内容 我发现根据这本书 https rads stackoverflow com amzn click com 0321356683我们必须优先选择静态类而不是非静态类 我记得在 C 最佳实践中 我们
  • #define, #ifdef #undef #endif

    我有以下代码 define PROC ADD void main void while 1 ifdef PROC ADD Do this code here then undefined it to run the code in the
  • 什么是多重重继承?

    我将以下称为 多重重新继承 直接继承一个类一次 并通过继承其一个或多个后代来间接继承一次或多次 通过继承一个类的两个或多个后代来间接继承一个类两次或多次 我想知道它是否存在以及如何明确访问嵌入的子对象 1 Professional C 2n
  • 为什么C#不支持多重继承? [复制]

    这个问题在这里已经有答案了 可能的重复 C 应该包含多重继承吗 https stackoverflow com questions 191691 should c include multiple inheritance 为什么C 不支持多
  • 为了清楚起见,是否应该在返回类型上使用无用的类型限定符?

    当我们的头文件中有原型时 我们的静态分析工具会抱怨 返回类型上有无用的类型限定符 例如 const int foo 我们这样定义它是因为该函数返回一个永远不会改变的常量 认为 API 看起来更清晰const到位 为了清楚起见 我觉得这类似于
  • C++20 范围太多 |运营商?

    我在这段代码中使用 g 10 2 有谁知道为什么我最后收到编译器错误std views reverse on results3 include

随机推荐

  • C# - Silverlight 中 .NET ArrayList.ToArray(Type) 的替换

    下面是我编写的一个简单方法 非常简化 所以我希望它仍然能够理解要点 用于获取字符串中数组元素的字符串表示形式 并将它们转换为这些值的实际数组 t 是数组的类型 DeserializeArray string sArrayElements o
  • 在 Tomcat 上安装 Sonar 和 Jenkins

    我有一个 tomcat 服务器 我想在上面安装 Jenkins 和 Sonar 我使用的是 debian 发行版 因此我通过 apt get 获得了 tomcat6 和 Jenkins 当我将 jenkins war 复制到 tomcat6
  • python:从程序运行交互式 python shell

    我经常遇到这样的情况 我将编写一个脚本 并且我正在编写脚本的一部分 我想以交互方式使用一些变量 到达该部分需要运行我已经编写的脚本的大部分 在这种情况下 从 shell 内部运行该程序并非易事 我必须以某种方式重新创建该函数的条件 我想做的
  • 为什么这不能是一个原始的?

    我正在摆弄 JavaScript 并注意到this永远不可能是原始的 我在说什么 让我解释 以这个函数为例 function test return typeof this test call Abc object test call 12
  • MVP 观点到底有多蠢?

    我正在尝试学习 MVP 但有些事情让我困惑 如果Presenter使用视图作为界面 那么View就不能只是控件的简单渲染 想象一下 尝试编写一个打字练习游戏 其中单词是随机生成到 UI 中的 用户必须在单词从屏幕上落下时输入单词 所以视图将
  • 以编程方式搜索 GMail?

    有没有什么方法可以以编程方式搜索 GMail 最好使用 C 例如 我想获取与搜索匹配的所有电子邮件标签 MyLabel 来自 电子邮件受保护 cdn cgi l email protection 以便我可以根据需要解析电子邮件正文 我发现的
  • 鼠标悬停在绝对定位的 div 上触发

    客观的 当将鼠标悬停在表格单元格上时 表格单元格的右上角会出现一个小的放大镜图标 将鼠标悬停在放大镜图标上并单击它将打开一个对话框窗口 以显示有关特定表格单元格中的项目的详细信息 我想为数百个表格单元重复使用相同的图标 而不是每次都重新创建
  • 以编程方式将库导入到 Databricks 中的工作区

    我想以编程方式添加一个 Python Wheel 库到 SharedDatabricks 上的工作区 在 GUI 中 工作区 gt 导入 gt 库 很容易做到 但我不知道如何在 Databricks CLI 中做到这一点 所以我想我有两种可
  • 如何删除solidity中的数组项

    我正在尝试删除 Solidity 数组中的某个项目 我正在探索一些文章 https ethereum stackexchange com questions 1527 how to delete an element at a certai
  • 获取 Linux 中 Windows 路径的基本名称

    假设我有一个包含 Windows 文件地址的字符串 比方说 local address C TEMP filename txt 从我使用的上述地址检索文件名 import os filename os path basename local
  • 如何计算按 toshortdatestring 分组的表的行数?

    我们有一个具有以下结构的数据库 public partial class ChartData public int Id get set public DateTime Timestamp get set public string Fun
  • java.lang.NoClassDefFoundError:com.google.android.gms.ads.AdView

    我正在编写一段代码来在我的 Android 应用程序中显示 Admob 横幅 为了实现这一目标 我做了以下一些调整 配置的谷歌播放服务库如下 https developers google com mobile ads sdk docs h
  • 在 Whatsapp Business Cloud api 中向多个收件人发送消息

    有没有一种方法可以在一个发布请求中向多个收件人发送消息 与我发送用分号分隔的电子邮件的方式相同 WhatsApp Business Cloud API 中没有选项可以一次性向多个电话号码发送消息 您必须一一发送或通过循环发送消息
  • React Material-UI 禁用处理程序中的按钮

    尝试在用户单击按钮后禁用该按钮 但通过处理程序函数 我参考过这两个类似的问题 React Material UI 禁用时如何为按钮提供自定义颜色 https stackoverflow com questions 55586626 reac
  • ASP.NET FileUpload:选择文件后如何自动回发?

    我正在开发 ASP NET 应用程序 在 FileUpload 控件中选择文件后 我需要回发到服务器 而不必让用户显式单击 提交 按钮 这可能吗 如果是这样 怎么办 我假设您想立即开始上传 如果是这样 您应该对此做出反应changeJava
  • 在 C++ 中访问父命名空间

    我有一个类似以下的场景 class criterion stuff about criteria namespace hex class criterion public criterion does not compile This sh
  • 双精度数据类型的简单数学运算比浮点数据类型更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的双精度数比浮点数快吗 https stackoverflow com questions 158889 are doubles faster than floats in c 我编写了简单的基
  • 使用 Python(或 R)提取 Google Scholar 结果

    我想使用 python 来抓取谷歌学术搜索结果 我找到了两个不同的脚本来做到这一点 一个是gscholar py https github com venthur gscholar另一个是scholar py 那个可以用作 python 库
  • 如何从地图上删除带有粘合圆的标记?

    我确实用标记绑定了圆圈以使视图如下 但是当我尝试从地图上删除标记时 圆圈仍然存在 唔 如何删除带有圆圈的标记 相关代码 function removeMarker if selectedMarker selectedMarker setMa
  • 在 C# 中,有没有办法使用短前缀而不是每个节点的完整命名空间来生成 XDocument?

    我只是想让我的 XML 更整洁 更简洁 我知道在 C 中可以做这样的事情 XNamespace ds http schemas microsoft com ado 2007 08 dataservices new XElement ds M