小编Spo*_*ins的帖子

替换各种XML文件中的字符串

给出以下xml文件,知道结构和内容可以更改:

<something>
  <parent>
    <child>Bird is the word 1.</child>
    <child>Curd is the word 2.</child>
    <child>Nerd is the word 3.</child>
  </parent>
  <parent>
    <child>Bird is the word 4.</child>
    <child>Word is the word 5.</child>
    <child>Bird is the word 6.</child>
  </parent>
</something>
Run Code Online (Sandbox Code Playgroud)

我想用一种方法来使用xquery(甚至xslt)来替换所提供的字符串的所有实例.例如,将"Bird"替换为"Dog".因此结果将是:

<something>
  <parent>
    <child>Dog is the word 1.</child>
    <child>Curd is the word 2.</child>
    <child>Nerd is the word 3.</child>
  </parent>
  <parent>
    <child>Dog is the word 4.</child>
    <child>Word is the word 5.</child>
    <child>Dog is the word 6.</child>
  </parent>
</something>
Run Code Online (Sandbox Code Playgroud)

我不知道这是否可能.我所做的每一次尝试都消除了标签.我甚至尝试了这个例子(http://geekswithblogs.net/Erik/archive/2008/04/01/120915.aspx),但是文本不是整个文档.

请帮忙!

UPDATE

我尝试使用xslt …

xml xslt xquery marklogic

2
推荐指数
1
解决办法
8370
查看次数

舍入双精度到4位精度具有意外行为

我正在舍入一个特定的双重值,并期待一定的结果,但它没有通过.这让我很好奇,如果存在缺陷,或者我在底层逻辑中遗漏了什么.

请参阅以下代码段:

double value = 0.01075;
Console.WriteLine(Math.Round(value, 4, MidpointRounding.AwayFromZero));
Run Code Online (Sandbox Code Playgroud)

产生

0.0107
Run Code Online (Sandbox Code Playgroud)

使用AwayFromZero让我觉得应该做0.0108.我已经尝试了几个不同的例子(如下所示)并在每个实例中得到预期的结果,除了我上面列出的那个.救命??!

double value = 0.010075;
Console.WriteLine(Math.Round(value, 5, MidpointRounding.AwayFromZero));
// 0.01008

value = 0.01075;
Console.WriteLine(Math.Round(value, 4, MidpointRounding.AwayFromZero));
// 0.0107

value = 0.010750000001;
Console.WriteLine(Math.Round(value, 4, MidpointRounding.AwayFromZero));
// 0.0108

value = 0.01065;
Console.WriteLine(Math.Round(value, 4, MidpointRounding.AwayFromZero));
// 0.0107

value = 0.01055;
Console.WriteLine(Math.Round(value, 4, MidpointRounding.AwayFromZero));
// 0.0106

value = 0.0175;
Console.WriteLine(Math.Round(value, 3, MidpointRounding.AwayFromZero));
// 0.018

value = 0.175;
Console.WriteLine(Math.Round(value, 2, MidpointRounding.AwayFromZero));
// 0.18

value = 0.75;
Console.WriteLine(Math.Round(value, 1, MidpointRounding.AwayFromZero));
// 0.8
Run Code Online (Sandbox Code Playgroud)

注意:使用Visual Studio Pro …

.net c#

1
推荐指数
1
解决办法
66
查看次数

标签 统计

.net ×1

c# ×1

marklogic ×1

xml ×1

xquery ×1

xslt ×1