【问题标题】:C# Reading XML file with dynamically generated tagsC# 使用动态生成的标签读取 XML 文件
【发布时间】:2012-11-26 12:47:29
【问题描述】:

我正在使用 C#(带有 VS 2010 的 .Net 框架 4)来读取动态生成的 XML 文件。该文件包含问题的答案(MCQ 单选按钮、MCQ 多答案复选框和简单的文本字段)。问题 ID 和选项 ID 是从数据库生成的。

我只需要提取问题 ID 和相关答案 ID。示例 XML 如下。

<?xml version="1.0"?>
<Root>
   <!-- Radio Button Answers -->    
   <Question_6_Option>26</Question_6_Option>
   <Question_8_Option>32</Question_8_Option>
   <Question_9_Option>off</Question_9_Option>
   <!-- Check Box Answers -->
   <Question_15_Option_41>41</Question_15_Option_41>
   <Question_15_Option_42>off</Question_15_Option_42>
   <Question_16_Option_43>43</Question_16_Option_43>
   <!-- Text Box Answers -->
   <Question_23_Text>London</Question_23_Text>
</Root>

以上是生成xml的格式,

标签名称格式:Question_QuestionID_SomeLogic 基于答案类型(单选、多个选项或文本框)。

如果用户未回答问题值将显示为“关闭”。那些不需要考虑。

如何从 C# 中获取问题 ID 和答案值?

谢谢,

聊天

【问题讨论】:

  • 好先生,我相信这是以下问题的重复。请记住在发布之前搜索问题。 stackoverflow.com/questions/2947738/…
  • 不是anwser,而是由谁生成xml?恕我直言,它的格式真的很糟糕。如果你是程序员,你应该考虑改变结构
  • 您可以正则表达式元素的名称,但通常这是形成 xml 的错误方式,如果可能,请先更改它:)
  • 到目前为止你有什么尝试?实例化一个 XDocument,然后枚举它的所有 XElement,在它们的名字上运行正则表达式就可以了。
  • 当你认为你已经看到了这一切......在复选框中回答元素中的最后一个数字是怎么回事?

标签: c# xml xml-parsing


【解决方案1】:

不是答案,但包含在此处而不是 cmets 中以使 XML 更具可读性:

我建议,如果您能够使您的 XML 更具计算机可读性 - 即从标签名称中删除数据并将其放入属性中以使其更易于解析。

<?xml version="1.0"?>
<Root>
    <!-- Radio Button Answers -->    
    <Question number="6" type="radio"><Selected index="26" /></Question>
    <Question number="8" type="radio"><Selected index="32" /></Question>
    <Question number="9" type="radio" />
    <!-- Check Box Answers -->
    <Question number="15" type="check">
        <Selected index="41" />
        <Selected index="42" /><!-- not sure if this should be included, I didn't understand how question 15 was both off (unanswered) and 41 (answered) -->
    </Question>
    <Question number="16" type="check">
        <Selected index="43" />
    </Question>
    <!-- Text Box Answers -->
    <Question number="23" type="text">London</Question>
</Root>

正如上面的@NewAmbition 所说,您的实际问题的答案已经在本网站的其他地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2010-10-03
    相关资源
    最近更新 更多