【发布时间】:2012-04-18 17:08:09
【问题描述】:
我正在从事一个项目,该项目可以插入另一个项目。我正在参与的项目产生了一种奇怪的 XML 语法,无法更改。
它有一个奇怪的元素来说明
<DocumentRoot>
<Parent>
<Child-Which-Can-Occur-Random-Number-Of-Times> Data </Child-Which-Can-Occur-Random-Number-Of-Times>
<Weird-Elt_12309843028938> Data I need </Weird-Elt_12309843028938>
<Weird-Elt_84509843323232> Data I need </Weird-Elt_84509843323232>
</Parent>
<Parent>
<Child-Which-Can-Occur-Random-Number-Of-Times> Data </Child-Which-Can-Occur-Random-Number-Of-Times>
<Weird-Elt_12309843028938> Data I need </Weird-Elt_12309843028938>
</Parent>
<Parent>
<Child-Which-Can-Occur-Random-Number-Of-Times> Data </Child-Which-Can-Occur-Random-Number-Of-Times>
<Weird-Elt_12309843028938> Data I need </Weird-Elt_12309843028938>
</Parent>
</DocumentRoot>
我需要什么:“Weird-Elt”标签的名称,以及它的内容。
问题:无法更改 XML。 Weird-Elt 元素可以出现随机次数,它上面的元素 Child-Which-Can-Occur-Random-Number-Of-Times 也是如此。
我能看到的唯一解决方案是使用 Linq to XML 结合正则表达式来匹配 Weird-Elt 的名称。
我对吗?
【问题讨论】:
-
为什么不能改语法?如果你的 XML 不能被
XML parser解析,那么你的设计就有缺陷。 -
stackoverflow.com/a/1732454/63011 我想这同样适用于 XML
-
不,你不应该需要正则表达式。访问“parent”.lastChild 怎么样?
-
@Bergi 在他的示例中,每个父级有超过 1 个
<Weird-Elt>标签,因此使用 lastChild 将不起作用。 -
你怎么知道你想要哪个元素?
标签: c# xml regex linq linq-to-xml