问题标签 [linq-to-xml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1808 浏览

c# - 如何将序列化的 LINQ to SQL 实体添加到 Word 2007 文档

我使用Open XML SDK (1.0)Word 2007 内容控制工具包和 LINQ to SQL(使用 CodeSmith PLINQO 模板)构建了一个基于模板的文档生成器。为此,我通过使用源代码中指定的 DataLoadOptions 检索实体,将 LINQ to SQL 实体序列化为 XML。

这很好用,除了最初在我的模板中填充 XML,我目前必须从 VS2008 的即时窗口中复制并粘贴 XML 到内容控制工具包中,它仍然具有来自当前实体的所有数据。

我正在寻找两种解决方案: 1) 这是用 Word 2007 构建文档生成器的好方法吗?1) 如何在没有数据的情况下只生成我需要的 XML?我曾想过创建一个 XSD,然后创建一个空的 XML 文档,但不确定如何以编程方式执行此操作,以便业务用户可以获取模板的 XML。(这不是必需的,只是一个不错的选择。)

感谢您的反馈意见,

瑞安

0 投票
3 回答
53846 浏览

c# - XElement 的子级

如何只获取 XElement 的子级?

我目前正在使用 XElement.Descendants() 函数,它返回所有级别的 XElement,而不仅仅是子节点。

我真正想要的是一个只有孩子的 IEnumerable。

0 投票
1 回答
960 浏览

.net - 使用 XLINQ 解析 XHTML 文件的库

当我意识到我需要为大约 50 个 XHTML 页面创建一个索引时,这些页面将来可能会被添加/删除/重命名/移动,我想“没问题——我将使用 LINQ to XML 编写一个快速索引生成器,因为XHTML 绝对算作 XML”。

当然,当我尝试运行它时,我发现 XLINQ 会阻塞像   这样的 XHTML 实体。我通过使用以下算法解决了这个问题:

  1. 将 XHTML 文件读入字符串。
  2. 在该字符串上使用正则表达式搜索和替换将一个部分添加到定义所有相关实体的 DOCTYPE 中(因为我只关心我读取的文件中的“标题”属性,而我的输出文件现在不使用任何实体,它只是将它们全部设置为空白,但我稍后可能会添加实际值)。
  3. 将结果解析为 XDocument。

要保存文件,我会做相反的事情:

  1. 将 XDocument 保存为字符串。
  2. 去掉实体定义。
  3. 保存到文件。

我的问题是,有没有我可以使用的库(尤其是内置的 .Net 库)将 XHTML 文件读入 XDocuments?我编写的代码已经完成了它的目的(生成当前索引并测试生成器程序的其余部分),如果其他人已经编写并测试了相同的东西,我真的不想花时间测试它。

非常感谢你们的时间,
Ria。

编辑:非常感谢;这行得通!当我保存 XHTML 时,我仍然需要做一些字符串处理(猜想这个库并不是真的为此而设计的:))而且我不得不稍微摆弄一下 Agility Pack 的源代码,以让它停止不加选择地粘贴 CDATA 部分围绕每个样式属性的内部(即使已经存在一个),但这就是开源的重点,对吗?

0 投票
2 回答
4164 浏览

c# - 此 linq 代码中的多个 orderby

我如何添加第二个项目来订购?我也想按goalsScored 元素排序。

但是 thenby 似乎并没有参与到这个查询中。

0 投票
2 回答
4179 浏览

c# - LINQ to XML:将多个级别折叠到单个列表

我目前正在开发 Silverlight 应用程序,需要将 XML 数据转换为适当的对象以进行数据绑定。本次讨论的基本类定义是:

以下是可能用于提供此对象的 XML 示例:

因此,各种节点映射到特定属性。这个问题的关键是<EX><I>节点。节点将<EX>包含一个或多个<I>节点的集合,并且在此示例中匹配上述类定义中的“排除”属性。

挑战来了(对我来说)。我无法控制发出此 XML 的 Web 服务,因此无法更改它。您会注意到,在此示例中,一个<I>节点还包含一个或多个<I>节点的另一个集合。我希望我可以使用 LINQ to XML 查询,它允许我将两个级别合并到一个集合中,并使用一个字符来分隔较低级别的项目,所以在这个例子中,当 LINQ 查询返回一个 TablularEntry对象,它将包含如下所示的排除项的集合:

  • 前列腺腺瘤性增生(600.20-600.21)
  • 前列腺:
  • *腺瘤 (600.20-600.21)
  • *放大 (600.00-600.01)
  • *肥大(600.00-600.01)

因此,在 XML 中,最后 3 个条目实际上是第二个条目的子对象,但在对象的 Excludes 属性中,它们都是同一个集合的一部分,前三个子对象包含标识符字符/字符串。

我有我在下面使用的 LINQ 查询的开始,我无法完全弄清楚将为我整合子对象的位。现在存在的代码是:

我在想我需要在里面嵌套一个 FROM 语句

排除=(来自我...)

声明收集子节点,但不能完全完成。当然,这可能是因为我的逻辑有点混乱。

如果您需要更多信息来回答,请随时提问。

提前致谢,

史蒂夫

0 投票
4 回答
6263 浏览

c# - 与 LINQ to XML 联合

我需要将两组 XElement 合并为一组唯一的元素。使用 .Union() 扩展方法,我只得到一个“联合所有”而不是联合。我错过了什么吗?

0 投票
4 回答
1283 浏览

c# - 使用 OledbConnection 的 Linq to XML 和 Excel 之间的速度差异?

我目前的一个要求是接收一个用户每周更新一次的 Excel 电子表格,并能够查询该文档的某些字段。

截至目前,我运行并将所有 Excel (2007) 数据推送到一个 xml 文件中(当他们上传文件时只有一次,然后我只使用 xml),然后保存所有需要的数据(不是所有电子表格中的列)用于通过 Linq-to-XML 进行查询;请注意,xml 文件比 excel 小。

现在我的问题是,使用 Linq 查询 XML 文件和使用 OledbConnection 查询 Excel 文件之间是否存在性能差异?我只是添加了另一个不必要的步骤吗?我想接下来的问题是,为了易于使用而继续将其推送到 xml 是否值得。

该文件有大约 1000 行。

0 投票
1 回答
536 浏览

c# - 我可以将 XText 对象更改为具有字符引用和实体解析的字符串吗?

鉴于此 XML:

我想做的是将元素的字符串值存储为字符串,所有字符引用和实体都解析为其等效的 unicode 字符。所以,对于这个元素,我想要“Circles & Boxes”。

当我这样做时(文本是表示文本节点的 XText 对象):

我得到“圆圈和盒子”,这不是我想要的。

这可能吗?

0 投票
2 回答
2557 浏览

xml - 为什么 XDocument.Descendants() 在 PowerShell ISE 中返回 IEnumerator?

我正在编写一个 PowerShell 脚本来操作一些 Windows Installer XML (WiX)。我正在使用 .NET 3.5 中的新 XML API 来执行此操作,因为我发现它比 DOM 更易于使用。以下脚本片段断然拒绝工作:

该脚本在单独的行上输出每个 <String> 标记。一旦这个错误被解决,我将让它做一些更有趣的事情;-)

XML 文档是一个标准的 WiX 本地化文件:

$strings 不是 $null(我已经明确测试过),如果我写主机 $wxl,我可以看到文档已经加载。将 $strings 导入 Get-Member 会返回一个错误,指出“没有为 get-member 指定对象”并且 write-host $strings 什么也不做。我也试过 $wxl.Descendants("WixLocalization") 得到相同的结果。$wxl.Root 和 $wxl.Nodes 之类的东西按预期工作。使用 PowerShell ISE 进行调试,我看到 $strings 已设置为 IEnumerator,而不是预期的 IEnumerable<XElement>。使用单个 MoveNext 和 Current 测试 IEnumerator 指示“Current =”,大概是 $null。

奇怪的是,相同的技术在以前的脚本中也有效。完全相同的代码,但具有不同的变量名和字符串文字。并且刚刚尝试调试该脚本(以验证行为),它现在似乎也显示相同的行为。

0 投票
1 回答
2930 浏览

c# - 如何比较 2 个 XML 文档?

我有两个相似的文档,但我需要找到一种优雅而有效的方法来比较这两个文件并返回 Doc #1 中不存在于 Doc #2 中的值。

XML 文档 #1

XML 文档 #2

如果我可以在 id 字段上加入这两个文档,我正在考虑使用 linq。有没有更好的办法?我希望返回 id #s 5 和 6。