XDocument获取预处理指令的属性

时间:2013-08-03 05:15:56

标签: xml linq

我想访问一个预处理指令“mso-infoPathSolution”,它有一个属性href并为其分配一个url说http://www.msn.com

<?xml version="1.0" encoding="utf-8"?>
<?mso-infoPathSolution name="urn:schemas-microsoft-com:office:infopath:XMLtool:-myXSD-2013-06-22T17-00-48" solutionVersion="1.0.0.457" productVersion="14.0.0.0" PIVersion="1.0.0.0"  href="" ?>

我需要使用XDocument类。我如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

使用VB.NET我能够确定处理指令被编码为XProcessingInstruction并且它被简单地分解为

  • Target(您的示例中为mso-infoPathSolution)和
  • Data(其他name="value"对,未解析),
  • String s。

因此,您需要检查现有的href="...",如果存在则调整它,否则添加它:

Dim xpi = xDoc.Nodes.OfType(Of XProcessingInstruction) _
          .Where(Function(p) p.Target = "mso-infoPathSolution").First
Dim re = New Regex("href=""([^""]*)""")
If re.IsMatch(xpi.Data) Then
  xpi.Data = re.Replace(xpi.Data, "href=""" & Url & """")
Else
  xpi.Data &= " href=""" & Url & """"
End If

答案 1 :(得分:0)

在C#中:
1.访问XDocument的XProcessingInstruction() 2.查看以下示例如何访问和更改处理字符串:
MSDNlink

(阅读完整文章或滚动到&#34;示例&#34;)