我正在使用Microsoft Visual C# 2008学习版。
假设我有一个字符串,字符串的内容是:"This is my <myTag myTagAttrib="colorize">awesome</myTag> string."
我告诉自己,我想对“awesome”这个词做点什么--可能调用一个函数来做一些叫做“colorize”的事情。
在C#中,检测该标记是否存在并获取该属性的最佳方法是什么?我在C#中使用过一些XElement之类的东西,但主要是阅读XML文件。
谢谢你!
- 阿迪娜
6条答案
按热度按时间vnjpjtjt1#
另一种解决方案:
我还考虑了您对Dabblernl的评论,其中您希望解析多个元素上的多个属性。
klh5stk12#
您可以使用正则表达式提取XML,将提取的xml字符串加载到XElement中,然后从那里开始:
如果找不到MyTag元素,则此代码将引发异常,但可以通过插入以下行进行补救:
如果字符串可以容纳不止MyTag Tag的内容,那就更有趣了......
sz81bmfz3#
我对你的例子有点困惑,因为你在字符串(文本内容)、标记和属性之间切换,但我认为你需要的是XPath。
因此,如果您的XML流如下所示:
这是另一个很棒的字符串
您可以使用如下所示的XPath表达式来查找属性:
//子级/@x
和一个类似于下面的函数来查找子标记下的文本值:
//子项
我是一个Java开发人员,所以我不知道您会使用什么XML库来完成这一工作,但是您需要一个DOM解析器来创建一个W3C Document类示例,方法是阅读XML文件,然后使用XPath提取值。
如果你需要的话,有一个很好的XPath tutorial from the W3C schools。
最新消息:
如果你说你已经有了一个String形式的XML流,那么答案是不是从文件中读取它,而是从String本身读取。Java有一个叫做InputStream和Reader的抽象,分别处理字节流和字符流。源可以是一个文件、一个字符串,检查您的C#DOMAPI,看看它是否有类似的东西。您将把字符串传递给解析器,解析器将给予一个您可以操作的DOM对象。
cigdeys34#
由于输入不是格式良好的XML,您将无法使用任何内置的XML库解析它。您需要一个正则表达式来提取格式良好的部分。您可能会使用一个更宽容的HTML解析器,如CodePlex上的HtmlAgilityPack。
hlswsv355#
这是我使用Regex匹配任何类型xml的解决方案:C#检测XML的更好方法?
7cwmlq896#
XmlTextReader
可以用一个特殊的构造函数来解析XML片段,这在这种情况下 * 可能 * 会有所帮助,但我对此并不肯定。这里有一篇深入的文章:
http://geekswithblogs.net/kobush/archive/2006/04/20/75717.aspx